| Index: Source/web/ChromeClientImpl.cpp
|
| diff --git a/Source/web/ChromeClientImpl.cpp b/Source/web/ChromeClientImpl.cpp
|
| index 68ed7ab0e41f67737a3aa4919499f677dc2233a7..aaf72f9694894c7e5183d814c5e299fadbaf079f 100644
|
| --- a/Source/web/ChromeClientImpl.cpp
|
| +++ b/Source/web/ChromeClientImpl.cpp
|
| @@ -249,7 +249,7 @@ void updatePolicyForEvent(const WebInputEvent* inputEvent, NavigationPolicy* pol
|
| *policy = userPolicy;
|
| }
|
|
|
| -WebNavigationPolicy getNavigationPolicy(const WindowFeatures& features)
|
| +WebNavigationPolicy getNavigationPolicy(const WindowFeatures& features, CreateWindowReason createWindowReason)
|
| {
|
| // If our default configuration was modified by a script or wasn't
|
| // created by a user gesture, then show as a popup. Else, let this
|
| @@ -263,17 +263,18 @@ WebNavigationPolicy getNavigationPolicy(const WindowFeatures& features)
|
| NavigationPolicy policy = NavigationPolicyNewForegroundTab;
|
| if (asPopup)
|
| policy = NavigationPolicyNewPopup;
|
| - updatePolicyForEvent(WebViewImpl::currentInputEvent(), &policy);
|
| + if (createWindowReason == CreatedFromLoadRequest)
|
| + updatePolicyForEvent(WebViewImpl::currentInputEvent(), &policy);
|
|
|
| return static_cast<WebNavigationPolicy>(policy);
|
| }
|
|
|
| -WebNavigationPolicy effectiveNavigationPolicy(NavigationPolicy navigationPolicy, const WindowFeatures& features)
|
| +WebNavigationPolicy effectiveNavigationPolicy(NavigationPolicy navigationPolicy, const WindowFeatures& features, CreateWindowReason createWindowReason)
|
| {
|
| WebNavigationPolicy policy = static_cast<WebNavigationPolicy>(navigationPolicy);
|
| if (policy == WebNavigationPolicyIgnore)
|
| - return getNavigationPolicy(features);
|
| - if (policy == WebNavigationPolicyNewBackgroundTab && getNavigationPolicy(features) != WebNavigationPolicyNewBackgroundTab && !UIEventWithKeyState::newTabModifierSetFromIsolatedWorld())
|
| + return getNavigationPolicy(features, createWindowReason);
|
| + if (policy == WebNavigationPolicyNewBackgroundTab && getNavigationPolicy(features, createWindowReason) != WebNavigationPolicyNewBackgroundTab && !UIEventWithKeyState::newTabModifierSetFromIsolatedWorld())
|
| return WebNavigationPolicyNewForegroundTab;
|
|
|
| return policy;
|
| @@ -282,12 +283,12 @@ WebNavigationPolicy effectiveNavigationPolicy(NavigationPolicy navigationPolicy,
|
| } // namespace
|
|
|
| Page* ChromeClientImpl::createWindow(LocalFrame* frame, const FrameLoadRequest& r, const WindowFeatures& features,
|
| - NavigationPolicy navigationPolicy, ShouldSendReferrer shouldSendReferrer)
|
| + NavigationPolicy navigationPolicy, ShouldSendReferrer shouldSendReferrer, CreateWindowReason createWindowReason)
|
| {
|
| if (!m_webView->client())
|
| return nullptr;
|
|
|
| - WebNavigationPolicy policy = effectiveNavigationPolicy(navigationPolicy, features);
|
| + WebNavigationPolicy policy = effectiveNavigationPolicy(navigationPolicy, features, createWindowReason);
|
| ASSERT(frame->document());
|
| Fullscreen::fullyExitFullscreen(*frame->document());
|
|
|
| @@ -306,10 +307,10 @@ void ChromeClientImpl::didOverscroll(const FloatSize& unusedDelta, const FloatSi
|
| m_webView->client()->didOverscroll(unusedDelta, accumulatedRootOverScroll, position, velocity);
|
| }
|
|
|
| -void ChromeClientImpl::show(NavigationPolicy navigationPolicy)
|
| +void ChromeClientImpl::show(NavigationPolicy navigationPolicy, CreateWindowReason createWindowReason)
|
| {
|
| if (m_webView->client())
|
| - m_webView->client()->show(effectiveNavigationPolicy(navigationPolicy, m_windowFeatures));
|
| + m_webView->client()->show(effectiveNavigationPolicy(navigationPolicy, m_windowFeatures, createWindowReason));
|
| }
|
|
|
| void ChromeClientImpl::setToolbarsVisible(bool value)
|
|
|