Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1247)

Unified Diff: Source/web/ChromeClientImpl.cpp

Issue 1163543002: Reland "Correctly set ScriptState in the image loader microtask" (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: git cl try Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/web/ChromeClientImpl.h ('k') | Source/web/tests/ChromeClientImplTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « Source/web/ChromeClientImpl.h ('k') | Source/web/tests/ChromeClientImplTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698