summaryrefslogtreecommitdiff
path: root/Source/WebCore/testing/InternalSettings.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-02-03 09:55:33 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-02-03 09:55:33 +0100
commitcd44dc59cdfc39534aef4d417e9f3c412e3be139 (patch)
tree8d89889ba95ed6ec9322e733846cc9cce9d7dff1 /Source/WebCore/testing/InternalSettings.cpp
parentd11f84f5b5cdc0d92a08af01b13472fdd5f9acb9 (diff)
downloadqtwebkit-cd44dc59cdfc39534aef4d417e9f3c412e3be139.tar.gz
Imported WebKit commit fce473cb4d55aa9fe9d0b0322a2fffecb731b961 (http://svn.webkit.org/repository/webkit/trunk@106560)
Diffstat (limited to 'Source/WebCore/testing/InternalSettings.cpp')
-rw-r--r--Source/WebCore/testing/InternalSettings.cpp274
1 files changed, 274 insertions, 0 deletions
diff --git a/Source/WebCore/testing/InternalSettings.cpp b/Source/WebCore/testing/InternalSettings.cpp
new file mode 100644
index 000000000..a4dbb44bf
--- /dev/null
+++ b/Source/WebCore/testing/InternalSettings.cpp
@@ -0,0 +1,274 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "InternalSettings.h"
+
+#include "CachedResourceLoader.h"
+#include "Document.h"
+#include "ExceptionCode.h"
+#include "Frame.h"
+#include "FrameView.h"
+#include "InspectorController.h"
+#include "Language.h"
+#include "Page.h"
+#include "Settings.h"
+
+#if ENABLE(GESTURE_EVENTS)
+#include "PlatformGestureEvent.h"
+#endif
+
+#if ENABLE(SMOOTH_SCROLLING)
+#include "ScrollAnimator.h"
+#endif
+
+#if ENABLE(INPUT_COLOR)
+#include "ColorChooser.h"
+#endif
+
+#define InternalSettingsGuardForSettingsReturn(returnValue) \
+ if (!settings()) { \
+ ec = INVALID_ACCESS_ERR; \
+ return returnValue; \
+ }
+
+#define InternalSettingsGuardForSettings() \
+ if (!settings()) { \
+ ec = INVALID_ACCESS_ERR; \
+ return; \
+ }
+
+#define InternalSettingsGuardForFrame() \
+ if (!frame()) { \
+ ec = INVALID_ACCESS_ERR; \
+ return; \
+ }
+
+#define InternalSettingsGuardForFrameView() \
+ if (!frame() || !frame()->view()) { \
+ ec = INVALID_ACCESS_ERR; \
+ return; \
+ }
+
+#define InternalSettingsGuardForPageReturn(returnValue) \
+ if (!page()) { \
+ ec = INVALID_ACCESS_ERR; \
+ return returnValue; \
+ }
+
+#define InternalSettingsGuardForPage() \
+ if (!page()) { \
+ ec = INVALID_ACCESS_ERR; \
+ return; \
+ }
+
+namespace WebCore {
+
+
+PassRefPtr<InternalSettings> InternalSettings::create(Frame* frame, InternalSettings* old)
+{
+ return adoptRef(new InternalSettings(frame, old));
+}
+
+InternalSettings::~InternalSettings()
+{
+}
+
+InternalSettings::InternalSettings(Frame* frame, InternalSettings* old)
+ : FrameDestructionObserver(frame)
+ , m_passwordEchoDurationInSecondsBackup(0)
+ , m_passwordEchoDurationInSecondsBackedUp(false)
+ , m_passwordEchoEnabledBackedUp(false)
+{
+ if (old && settings()) {
+ if (old->m_passwordEchoDurationInSecondsBackedUp)
+ settings()->setPasswordEchoDurationInSeconds(old->m_passwordEchoDurationInSecondsBackup);
+ if (old->m_passwordEchoEnabledBackedUp)
+ settings()->setPasswordEchoEnabled(old->m_passwordEchoEnabledBackup);
+ }
+}
+
+Settings* InternalSettings::settings() const
+{
+ if (!frame() || !frame()->page())
+ return 0;
+ return frame()->page()->settings();
+}
+
+Document* InternalSettings::document() const
+{
+ return frame() ? frame()->document() : 0;
+}
+
+Page* InternalSettings::page() const
+{
+ return document() ? document()->page() : 0;
+}
+
+void InternalSettings::setInspectorResourcesDataSizeLimits(int maximumResourcesContentSize, int maximumSingleResourceContentSize, ExceptionCode& ec)
+{
+#if ENABLE(INSPECTOR)
+ if (!page() || !page()->inspectorController()) {
+ ec = INVALID_ACCESS_ERR;
+ return;
+ }
+ page()->inspectorController()->setResourcesDataSizeLimitsFromInternals(maximumResourcesContentSize, maximumSingleResourceContentSize);
+#else
+ UNUSED_PARAM(maximumResourcesContentSize);
+ UNUSED_PARAM(maximumSingleResourceContentSize);
+ UNUSED_PARAM(ec);
+#endif
+}
+
+void InternalSettings::setForceCompositingMode(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setForceCompositingMode(enabled);
+}
+
+void InternalSettings::setAcceleratedFiltersEnabled(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAcceleratedFiltersEnabled(enabled);
+}
+
+void InternalSettings::setEnableCompositingForFixedPosition(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAcceleratedCompositingForFixedPositionEnabled(enabled);
+}
+
+void InternalSettings::setEnableCompositingForScrollableFrames(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAcceleratedCompositingForScrollableFramesEnabled(enabled);
+}
+
+void InternalSettings::setAcceleratedDrawingEnabled(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setAcceleratedDrawingEnabled(enabled);
+}
+
+void InternalSettings::setEnableScrollAnimator(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+#if ENABLE(SMOOTH_SCROLLING)
+ settings()->setEnableScrollAnimator(enabled);
+#else
+ UNUSED_PARAM(enabled);
+#endif
+}
+
+void InternalSettings::setZoomAnimatorTransform(float scale, float tx, float ty, ExceptionCode& ec)
+{
+ InternalSettingsGuardForFrame();
+
+#if ENABLE(GESTURE_EVENTS)
+ PlatformGestureEvent pge(PlatformEvent::GestureDoubleTap, IntPoint(tx, ty), IntPoint(tx, ty), 0, scale, 0.f, 0, 0, 0, 0);
+ frame()->eventHandler()->handleGestureEvent(pge);
+#else
+ UNUSED_PARAM(scale);
+ UNUSED_PARAM(tx);
+ UNUSED_PARAM(ty);
+#endif
+}
+
+void InternalSettings::setZoomParameters(float scale, float x, float y, ExceptionCode& ec)
+{
+ InternalSettingsGuardForFrameView();
+
+#if ENABLE(SMOOTH_SCROLLING)
+ frame()->view()->scrollAnimator()->setZoomParametersForTest(scale, x, y);
+#else
+ UNUSED_PARAM(scale);
+ UNUSED_PARAM(x);
+ UNUSED_PARAM(y);
+#endif
+}
+
+void InternalSettings::setMockScrollbarsEnabled(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setMockScrollbarsEnabled(enabled);
+}
+
+void InternalSettings::setPasswordEchoEnabled(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ if (!m_passwordEchoEnabledBackedUp) {
+ m_passwordEchoEnabledBackup = settings()->passwordEchoEnabled();
+ m_passwordEchoEnabledBackedUp = true;
+ }
+ settings()->setPasswordEchoEnabled(enabled);
+}
+
+void InternalSettings::setPasswordEchoDurationInSeconds(double durationInSeconds, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ if (!m_passwordEchoDurationInSecondsBackedUp) {
+ m_passwordEchoDurationInSecondsBackup = settings()->passwordEchoDurationInSeconds();
+ m_passwordEchoDurationInSecondsBackedUp = true;
+ }
+ settings()->setPasswordEchoDurationInSeconds(durationInSeconds);
+}
+
+void InternalSettings::setFixedElementsLayoutRelativeToFrame(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForFrameView();
+ settings()->setFixedElementsLayoutRelativeToFrame(enabled);
+}
+
+void InternalSettings::setUnifiedTextCheckingEnabled(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setUnifiedTextCheckerEnabled(enabled);
+}
+
+bool InternalSettings::unifiedTextCheckingEnabled(ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettingsReturn(false);
+ return settings()->unifiedTextCheckerEnabled();
+}
+
+float InternalSettings::pageScaleFactor(ExceptionCode& ec)
+{
+ InternalSettingsGuardForPageReturn(0);
+ return page()->pageScaleFactor();
+}
+
+void InternalSettings::setPageScaleFactor(float scaleFactor, int x, int y, ExceptionCode& ec)
+{
+ InternalSettingsGuardForPage();
+ page()->setPageScaleFactor(scaleFactor, IntPoint(x, y));
+}
+
+void InternalSettings::setPerTileDrawingEnabled(bool enabled, ExceptionCode& ec)
+{
+ InternalSettingsGuardForSettings();
+ settings()->setPerTileDrawingEnabled(enabled);
+}
+
+}