summaryrefslogtreecommitdiff
path: root/Source/WebKit/chromium/src/ChromeClientImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/chromium/src/ChromeClientImpl.cpp')
-rw-r--r--Source/WebKit/chromium/src/ChromeClientImpl.cpp40
1 files changed, 26 insertions, 14 deletions
diff --git a/Source/WebKit/chromium/src/ChromeClientImpl.cpp b/Source/WebKit/chromium/src/ChromeClientImpl.cpp
index 94959380a..e617e8f5a 100644
--- a/Source/WebKit/chromium/src/ChromeClientImpl.cpp
+++ b/Source/WebKit/chromium/src/ChromeClientImpl.cpp
@@ -37,8 +37,12 @@
#if ENABLE(INPUT_TYPE_COLOR)
#include "ColorChooser.h"
#include "ColorChooserClient.h"
+#if ENABLE(PAGE_POPUP)
+#include "ColorChooserPopupUIController.h"
+#else
#include "ColorChooserUIController.h"
#endif
+#endif
#include "Console.h"
#include "Cursor.h"
#include "DatabaseTracker.h"
@@ -46,6 +50,7 @@
#include "DateTimeChooserImpl.h"
#include "Document.h"
#include "DocumentLoader.h"
+#include "ExternalDateTimeChooser.h"
#include "ExternalPopupMenu.h"
#include "FileChooser.h"
#include "FileIconLoader.h"
@@ -292,7 +297,12 @@ static inline void updatePolicyForEvent(const WebInputEvent* inputEvent, WebNavi
bool alt = mouseEvent->modifiers & WebMouseEvent::AltKey;
bool meta = mouseEvent->modifiers & WebMouseEvent::MetaKey;
- WebViewImpl::navigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, policy);
+ WebNavigationPolicy userPolicy = *policy;
+ WebViewImpl::navigationPolicyFromMouseEvent(buttonNumber, ctrl, shift, alt, meta, &userPolicy);
+ // User and app agree that we want a new window; let the app override the decorations.
+ if (userPolicy == WebNavigationPolicyNewWindow && *policy == WebNavigationPolicyNewPopup)
+ return;
+ *policy = userPolicy;
}
WebNavigationPolicy ChromeClientImpl::getNavigationPolicy()
@@ -590,7 +600,7 @@ void ChromeClientImpl::mouseDidMoveOverElement(
Widget* widget = toRenderWidget(object)->widget();
if (widget && widget->isPluginContainer()) {
WebPluginContainerImpl* plugin = static_cast<WebPluginContainerImpl*>(widget);
- url = plugin->plugin()->linkAtPosition(result.roundedPoint());
+ url = plugin->plugin()->linkAtPosition(result.roundedPointInInnerNodeFrame());
}
}
}
@@ -615,22 +625,18 @@ void ChromeClientImpl::dispatchViewportPropertiesDidChange(const ViewportArgumen
if (!m_webView->settings()->viewportEnabled() || !m_webView->isFixedLayoutModeEnabled() || !m_webView->client() || !m_webView->page())
return;
- FrameView* frameView = m_webView->mainFrameImpl()->frameView();
- int dpi = screenHorizontalDPI(frameView);
- ASSERT(dpi > 0);
-
WebViewClient* client = m_webView->client();
- WebRect deviceRect = client->windowRect();
+ WebSize deviceSize = m_webView->size();
// If the window size has not been set yet don't attempt to set the viewport
- if (!deviceRect.width || !deviceRect.height)
+ if (!deviceSize.width || !deviceSize.height)
return;
Settings* settings = m_webView->page()->settings();
- float devicePixelRatio = dpi / ViewportArguments::deprecatedTargetDPI;
+ float devicePixelRatio = client->screenInfo().deviceScaleFactor;
// Call the common viewport computing logic in ViewportArguments.cpp.
ViewportAttributes computed = computeViewportAttributes(
- arguments, settings->layoutFallbackWidth(), deviceRect.width, deviceRect.height,
- devicePixelRatio, IntSize(deviceRect.width, deviceRect.height));
+ arguments, settings->layoutFallbackWidth(), deviceSize.width, deviceSize.height,
+ devicePixelRatio, IntSize(deviceSize.width, deviceSize.height));
restrictScaleFactorToInitialScaleIfNotUserScalable(computed);
@@ -675,7 +681,14 @@ void ChromeClientImpl::reachedApplicationCacheOriginQuota(SecurityOrigin*, int64
#if ENABLE(INPUT_TYPE_COLOR)
PassOwnPtr<ColorChooser> ChromeClientImpl::createColorChooser(ColorChooserClient* chooserClient, const Color&)
{
- return adoptPtr(new ColorChooserUIController(this, chooserClient));
+ OwnPtr<ColorChooserUIController> controller;
+#if ENABLE(PAGE_POPUP)
+ controller = adoptPtr(new ColorChooserPopupUIController(this, chooserClient));
+#else
+ controller = adoptPtr(new ColorChooserUIController(this, chooserClient));
+#endif
+ controller->openUI();
+ return controller.release();
}
PassOwnPtr<WebColorChooser> ChromeClientImpl::createWebColorChooser(WebColorChooserClient* chooserClient, const WebColor& initialColor)
{
@@ -692,8 +705,7 @@ PassRefPtr<DateTimeChooser> ChromeClientImpl::openDateTimeChooser(DateTimeChoose
#if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
return DateTimeChooserImpl::create(this, pickerClient, parameters);
#else
- notImplemented();
- return PassRefPtr<DateTimeChooser>();
+ return ExternalDateTimeChooser::create(this, m_webView->client(), pickerClient, parameters);
#endif
}
#endif