Commit 34734c86 authored by Michael Thiessen's avatar Michael Thiessen Committed by Commit Bot

Fix missing user gesture on new window navigations for <a> and <svg>-<a>

Bug: 993149
Change-Id: I0d2cb6238d3adf421f074c74124191898f901af7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1758923
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarNate Chapin <japhet@chromium.org>
Cr-Commit-Position: refs/heads/master@{#688180}
parent 1fd7658c
...@@ -27,7 +27,6 @@ import org.junit.runner.RunWith; ...@@ -27,7 +27,6 @@ import org.junit.runner.RunWith;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.test.util.CallbackHelper; import org.chromium.base.test.util.CallbackHelper;
import org.chromium.base.test.util.CommandLineFlags; import org.chromium.base.test.util.CommandLineFlags;
import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.RetryOnFailure; import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeSwitches;
...@@ -414,7 +413,6 @@ public class UrlOverridingTest { ...@@ -414,7 +413,6 @@ public class UrlOverridingTest {
@Test @Test
@SmallTest @SmallTest
@RetryOnFailure @RetryOnFailure
@DisabledTest(message = "crbug.com/993149")
public void testOpenWindowFromLinkUserGesture() throws InterruptedException { public void testOpenWindowFromLinkUserGesture() throws InterruptedException {
boolean opensNewTab = boolean opensNewTab =
!(mActivityTestRule.getActivity().getCurrentTabModel() instanceof SingleTabModel); !(mActivityTestRule.getActivity().getCurrentTabModel() instanceof SingleTabModel);
...@@ -425,7 +423,6 @@ public class UrlOverridingTest { ...@@ -425,7 +423,6 @@ public class UrlOverridingTest {
@Test @Test
@SmallTest @SmallTest
@RetryOnFailure @RetryOnFailure
@DisabledTest(message = "crbug.com/993149")
public void testOpenWindowFromSvgUserGesture() throws InterruptedException { public void testOpenWindowFromSvgUserGesture() throws InterruptedException {
boolean opensNewTab = boolean opensNewTab =
!(mActivityTestRule.getActivity().getCurrentTabModel() instanceof SingleTabModel); !(mActivityTestRule.getActivity().getCurrentTabModel() instanceof SingleTabModel);
......
...@@ -442,6 +442,7 @@ void HTMLAnchorElement::HandleClick(Event& event) { ...@@ -442,6 +442,7 @@ void HTMLAnchorElement::HandleClick(Event& event) {
} }
request.SetRequestContext(mojom::RequestContextType::HYPERLINK); request.SetRequestContext(mojom::RequestContextType::HYPERLINK);
request.SetHasUserGesture(LocalFrame::HasTransientUserActivation(frame));
const AtomicString& target = getAttribute(kTargetAttr); const AtomicString& target = getAttribute(kTargetAttr);
FrameLoadRequest frame_request(&GetDocument(), request); FrameLoadRequest frame_request(&GetDocument(), request);
frame_request.SetNavigationPolicy(NavigationPolicyFromEvent(&event)); frame_request.SetNavigationPolicy(NavigationPolicyFromEvent(&event));
......
...@@ -133,14 +133,18 @@ void SVGAElement::DefaultEventHandler(Event& event) { ...@@ -133,14 +133,18 @@ void SVGAElement::DefaultEventHandler(Event& event) {
target = AtomicString("_blank"); target = AtomicString("_blank");
event.SetDefaultHandled(); event.SetDefaultHandled();
if (!GetDocument().GetFrame())
return;
FrameLoadRequest frame_request( FrameLoadRequest frame_request(
&GetDocument(), ResourceRequest(GetDocument().CompleteURL(url))); &GetDocument(), ResourceRequest(GetDocument().CompleteURL(url)));
frame_request.SetNavigationPolicy(NavigationPolicyFromEvent(&event)); frame_request.SetNavigationPolicy(NavigationPolicyFromEvent(&event));
frame_request.SetTriggeringEventInfo( frame_request.SetTriggeringEventInfo(
event.isTrusted() ? WebTriggeringEventInfo::kFromTrustedEvent event.isTrusted() ? WebTriggeringEventInfo::kFromTrustedEvent
: WebTriggeringEventInfo::kFromUntrustedEvent); : WebTriggeringEventInfo::kFromUntrustedEvent);
if (!GetDocument().GetFrame()) frame_request.GetResourceRequest().SetHasUserGesture(
return; LocalFrame::HasTransientUserActivation(GetDocument().GetFrame()));
Frame* frame = GetDocument() Frame* frame = GetDocument()
.GetFrame() .GetFrame()
->Tree() ->Tree()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment