Commit 88e8166c authored by Jeremy Roman's avatar Jeremy Roman Committed by Commit Bot

Log a console warning when PortalNavigationThrottle blocks a request.

Bug: 1013389
Change-Id: I71e8a014660b6144c7f8a13c11bb6e692e331487
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1937856
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Commit-Queue: Kevin McNee <mcnee@chromium.org>
Auto-Submit: Jeremy Roman <jbroman@chromium.org>
Reviewed-by: default avatarKevin McNee <mcnee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#719384}
parent e9e1d277
......@@ -6,6 +6,7 @@
#include "base/feature_list.h"
#include "base/memory/ptr_util.h"
#include "base/strings/stringprintf.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/portal/portal.h"
#include "content/browser/web_contents/web_contents_impl.h"
......@@ -64,7 +65,17 @@ PortalNavigationThrottle::WillStartOrRedirectRequest() {
url::Origin first_party_origin =
portal->owner_render_frame_host()->GetLastCommittedOrigin();
return origin == first_party_origin ? PROCEED : BLOCK_REQUEST;
if (origin == first_party_origin)
return PROCEED;
// TODO(crbug.com/1013389): Update this message to refer to external
// documentation if we write any.
portal->owner_render_frame_host()->AddMessageToConsole(
blink::mojom::ConsoleMessageLevel::kWarning,
base::StringPrintf("Navigating a portal to cross-origin content (from "
"%s) is not currently permitted and was blocked.",
origin.Serialize().c_str()));
return BLOCK_REQUEST;
}
} // namespace content
......@@ -20,6 +20,7 @@
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/request_handler_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/common/features.h"
#include "url/gurl.h"
......@@ -247,5 +248,27 @@ IN_PROC_BROWSER_TEST_F(PortalNavigationThrottleBrowserTest,
EXPECT_EQ(portal->GetPortalContents()->GetLastCommittedURL(), redirect_url);
}
IN_PROC_BROWSER_TEST_F(PortalNavigationThrottleBrowserTest,
LogsConsoleWarning) {
ASSERT_TRUE(NavigateToURL(
GetWebContents(),
embedded_test_server()->GetURL("portal.test", "/title1.html")));
auto* old_delegate = GetWebContents()->GetDelegate();
ConsoleObserverDelegate console_delegate(GetWebContents(),
"*portal*cross-origin*");
GetWebContents()->SetDelegate(&console_delegate);
Portal* portal = InsertAndWaitForPortal(
embedded_test_server()->GetURL("not.portal.test", "/title2.html"),
/*expected_to_succeed=*/false);
EXPECT_NE(portal, nullptr);
console_delegate.Wait();
EXPECT_THAT(console_delegate.message(),
::testing::HasSubstr("http://not.portal.test"));
GetWebContents()->SetDelegate(old_delegate);
}
} // namespace
} // namespace content
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