Index: third_party/WebKit/Source/web/ChromeClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/ChromeClientImpl.cpp b/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
index 7a6cbf3137ee3b3a5e34619b23d8f5e1071ba626..f2801ea83fb8653b1dd8e2cf883e65deba834336 100644 |
--- a/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/ChromeClientImpl.cpp |
@@ -38,7 +38,6 @@ |
#include "core/dom/Document.h" |
#include "core/dom/Fullscreen.h" |
#include "core/dom/Node.h" |
-#include "core/events/UIEventWithKeyState.h" |
#include "core/events/WebInputEventConversion.h" |
#include "core/exported/WebFileChooserCompletionImpl.h" |
#include "core/exported/WebPluginContainerBase.h" |
@@ -75,7 +74,6 @@ |
#include "platform/Cursor.h" |
#include "platform/FileChooser.h" |
#include "platform/Histogram.h" |
-#include "platform/KeyboardCodes.h" |
#include "platform/RuntimeEnabledFeatures.h" |
#include "platform/WebFrameScheduler.h" |
#include "platform/animation/CompositorAnimationHost.h" |
@@ -93,7 +91,6 @@ |
#include "platform/wtf/text/StringConcatenate.h" |
#include "public/platform/WebCursorInfo.h" |
#include "public/platform/WebFloatRect.h" |
-#include "public/platform/WebInputEvent.h" |
#include "public/platform/WebRect.h" |
#include "public/platform/WebURLRequest.h" |
#include "public/web/WebAXObject.h" |
@@ -276,116 +273,15 @@ bool ChromeClientImpl::AcceptsLoadDrops() const { |
return !web_view_->Client() || web_view_->Client()->AcceptsLoadDrops(); |
} |
-namespace { |
- |
-void UpdatePolicyForEvent(const WebInputEvent* input_event, |
- NavigationPolicy* policy) { |
- if (!input_event) |
- return; |
- |
- unsigned short button_number = 0; |
- if (input_event->GetType() == WebInputEvent::kMouseUp) { |
- const WebMouseEvent* mouse_event = |
- static_cast<const WebMouseEvent*>(input_event); |
- |
- switch (mouse_event->button) { |
- case WebMouseEvent::Button::kLeft: |
- button_number = 0; |
- break; |
- case WebMouseEvent::Button::kMiddle: |
- button_number = 1; |
- break; |
- case WebMouseEvent::Button::kRight: |
- button_number = 2; |
- break; |
- default: |
- return; |
- } |
- } else if ((WebInputEvent::IsKeyboardEventType(input_event->GetType()) && |
- static_cast<const WebKeyboardEvent*>(input_event) |
- ->windows_key_code == VKEY_RETURN) || |
- WebInputEvent::IsGestureEventType(input_event->GetType())) { |
- // Keyboard and gesture events can simulate mouse events. |
- button_number = 0; |
- } else { |
- return; |
- } |
- |
- bool ctrl = input_event->GetModifiers() & WebInputEvent::kControlKey; |
- bool shift = input_event->GetModifiers() & WebInputEvent::kShiftKey; |
- bool alt = input_event->GetModifiers() & WebInputEvent::kAltKey; |
- bool meta = input_event->GetModifiers() & WebInputEvent::kMetaKey; |
- |
- NavigationPolicy user_policy = *policy; |
- NavigationPolicyFromMouseEvent(button_number, ctrl, shift, alt, meta, |
- &user_policy); |
- |
- // When the input event suggests a download, but the navigation was initiated |
- // by script, we should not override it. |
- if (user_policy == kNavigationPolicyDownload && |
- *policy != kNavigationPolicyIgnore) |
- return; |
- |
- // User and app agree that we want a new window; let the app override the |
- // decorations. |
- if (user_policy == kNavigationPolicyNewWindow && |
- *policy == kNavigationPolicyNewPopup) |
- return; |
- *policy = user_policy; |
-} |
- |
-WebNavigationPolicy GetNavigationPolicy(const WindowFeatures& features) { |
- // If the window features didn't enable the toolbar, or this window wasn't |
- // created by a user gesture, show as a popup instead of a new tab. |
- // |
- // Note: this previously also checked that menubar, resizable, scrollbar, and |
- // statusbar are enabled too. When no feature string is specified, these |
- // features default to enabled (and the window opens as a new tab). However, |
- // when a feature string is specified, any *unspecified* features default to |
- // disabled, often causing the window to open as a popup instead. |
- // |
- // As specifying menubar, resizable, scrollbar, and statusbar have no effect |
- // on the UI, just ignore them and only consider whether or not the toolbar is |
- // enabled, which matches Firefox's behavior. |
- bool as_popup = !features.tool_bar_visible; |
- |
- NavigationPolicy policy = kNavigationPolicyNewForegroundTab; |
- if (as_popup) |
- policy = kNavigationPolicyNewPopup; |
- UpdatePolicyForEvent(WebViewBase::CurrentInputEvent(), &policy); |
- |
- return static_cast<WebNavigationPolicy>(policy); |
-} |
- |
-WebNavigationPolicy EffectiveNavigationPolicy( |
- NavigationPolicy navigation_policy, |
- const WindowFeatures& features) { |
- WebNavigationPolicy policy = |
- static_cast<WebNavigationPolicy>(navigation_policy); |
- if (policy == kWebNavigationPolicyIgnore) |
- return GetNavigationPolicy(features); |
- if (policy == kWebNavigationPolicyNewBackgroundTab && |
- GetNavigationPolicy(features) != kWebNavigationPolicyNewBackgroundTab && |
- !UIEventWithKeyState::NewTabModifierSetFromIsolatedWorld()) |
- return kWebNavigationPolicyNewForegroundTab; |
- |
- return policy; |
-} |
- |
-} // namespace |
- |
Page* ChromeClientImpl::CreateWindow(LocalFrame* frame, |
const FrameLoadRequest& r, |
- const WindowFeatures& features, |
+ const WebWindowFeatures& features, |
NavigationPolicy navigation_policy) { |
if (!web_view_->Client()) |
return nullptr; |
if (!frame->GetPage() || frame->GetPage()->Suspended()) |
return nullptr; |
- |
- WebNavigationPolicy policy = |
- EffectiveNavigationPolicy(navigation_policy, features); |
DCHECK(frame->GetDocument()); |
Fullscreen::FullyExitFullscreen(*frame->GetDocument()); |
@@ -393,8 +289,8 @@ Page* ChromeClientImpl::CreateWindow(LocalFrame* frame, |
static_cast<WebViewBase*>(web_view_->Client()->CreateView( |
WebLocalFrameImpl::FromFrame(frame), |
WrappedResourceRequest(r.GetResourceRequest()), features, |
- r.FrameName(), policy, |
- r.GetShouldSetOpener() == kNeverSetOpener || features.noopener)); |
+ r.FrameName(), static_cast<WebNavigationPolicy>(navigation_policy), |
+ r.GetShouldSetOpener() == kNeverSetOpener)); |
if (!new_view) |
return nullptr; |
return new_view->GetPage(); |
@@ -413,48 +309,10 @@ void ChromeClientImpl::DidOverscroll(const FloatSize& overscroll_delta, |
} |
void ChromeClientImpl::Show(NavigationPolicy navigation_policy) { |
- if (web_view_->Client()) |
+ if (web_view_->Client()) { |
web_view_->Client()->Show( |
- EffectiveNavigationPolicy(navigation_policy, window_features_)); |
-} |
- |
-void ChromeClientImpl::SetToolbarsVisible(bool value) { |
- window_features_.tool_bar_visible = value; |
-} |
- |
-bool ChromeClientImpl::ToolbarsVisible() { |
- return window_features_.tool_bar_visible; |
-} |
- |
-void ChromeClientImpl::SetStatusbarVisible(bool value) { |
- window_features_.status_bar_visible = value; |
-} |
- |
-bool ChromeClientImpl::StatusbarVisible() { |
- return window_features_.status_bar_visible; |
-} |
- |
-void ChromeClientImpl::SetScrollbarsVisible(bool value) { |
- window_features_.scrollbars_visible = value; |
- if (WebLocalFrameImpl* web_frame = |
- ToWebLocalFrameImpl(web_view_->MainFrame())) |
- web_frame->SetCanHaveScrollbars(value); |
-} |
- |
-bool ChromeClientImpl::ScrollbarsVisible() { |
- return window_features_.scrollbars_visible; |
-} |
- |
-void ChromeClientImpl::SetMenubarVisible(bool value) { |
- window_features_.menu_bar_visible = value; |
-} |
- |
-bool ChromeClientImpl::MenubarVisible() { |
- return window_features_.menu_bar_visible; |
-} |
- |
-void ChromeClientImpl::SetResizable(bool value) { |
- window_features_.resizable = value; |
+ static_cast<WebNavigationPolicy>(navigation_policy)); |
+ } |
} |
bool ChromeClientImpl::ShouldReportDetailedMessageForSource( |
@@ -1082,6 +940,10 @@ void ChromeClientImpl::SetTouchAction(LocalFrame* frame, |
client->SetTouchAction(static_cast<TouchAction>(touch_action)); |
} |
+const WebInputEvent* ChromeClientImpl::GetCurrentInputEvent() const { |
+ return WebViewBase::CurrentInputEvent(); |
+} |
+ |
bool ChromeClientImpl::RequestPointerLock(LocalFrame* frame) { |
LocalFrame& local_root = frame->LocalFrameRoot(); |
return WebLocalFrameImpl::FromFrame(&local_root) |