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

Unified Diff: content/browser/web_contents/web_contents_impl_browsertest.cc

Issue 2777813003: Fix mobile user agent string not being used when PlzNavigate is enabled. (Closed)
Patch Set: review comment Created 3 years, 9 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 | « content/browser/frame_host/navigation_request.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/web_contents/web_contents_impl_browsertest.cc
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc
index 7fb10684a46add625b5bc1a10973229f86461ea7..bf807ff9339efa73103a3370a6e8e8c4abd39114 100644
--- a/content/browser/web_contents/web_contents_impl_browsertest.cc
+++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -9,6 +9,7 @@
#include "base/values.h"
#include "build/build_config.h"
#include "content/browser/frame_host/navigation_entry_impl.h"
+#include "content/browser/loader/resource_dispatcher_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/web_contents/web_contents_impl.h"
#include "content/browser/web_contents/web_contents_view.h"
@@ -32,6 +33,7 @@
#include "content/public/test/test_navigation_observer.h"
#include "content/public/test/test_utils.h"
#include "content/shell/browser/shell.h"
+#include "content/shell/browser/shell_resource_dispatcher_host_delegate.h"
#include "content/test/content_browser_test_utils_internal.h"
#include "net/dns/mock_host_resolver.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
@@ -1410,4 +1412,71 @@ IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest,
EXPECT_TRUE(delegate.get()->request_to_lock_mouse_called_);
}
+namespace {
+class TestResourceDispatcherHostDelegate
+ : public ShellResourceDispatcherHostDelegate {
+ public:
+ explicit TestResourceDispatcherHostDelegate(bool* saw_override)
+ : saw_override_(saw_override) {}
+
+ void RequestBeginning(
+ net::URLRequest* request,
+ ResourceContext* resource_context,
+ AppCacheService* appcache_service,
+ ResourceType resource_type,
+ std::vector<std::unique_ptr<ResourceThrottle>>* throttles) override {
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ ShellResourceDispatcherHostDelegate::RequestBeginning(
+ request, resource_context, appcache_service, resource_type, throttles);
+
+ net::HttpRequestHeaders headers = request->extra_request_headers();
+ std::string user_agent;
+ CHECK(headers.GetHeader(net::HttpRequestHeaders::kUserAgent, &user_agent));
+ if (user_agent.find("foo") != std::string::npos)
+ *saw_override_ = true;
+ }
+
+ private:
+ bool* saw_override_;
+};
+} // namespace
+
+// Checks that user agent override string is only used when it's overridden.
+IN_PROC_BROWSER_TEST_F(WebContentsImplBrowserTest, UserAgentOverride) {
+ bool saw_override = false;
+ TestResourceDispatcherHostDelegate new_delegate(&saw_override);
+ ResourceDispatcherHostDelegate* old_delegate =
+ ResourceDispatcherHostImpl::Get()->delegate();
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&ResourceDispatcherHost::SetDelegate,
+ base::Unretained(ResourceDispatcherHostImpl::Get()),
+ &new_delegate));
+
+ ASSERT_TRUE(embedded_test_server()->Start());
+ const GURL kUrl(embedded_test_server()->GetURL("/simple_page.html"));
+ NavigateToURL(shell(), kUrl);
+ ASSERT_FALSE(saw_override);
+
+ shell()->web_contents()->SetUserAgentOverride("foo");
+ NavigateToURL(shell(), kUrl);
+ ASSERT_FALSE(saw_override);
+
+ shell()
+ ->web_contents()
+ ->GetController()
+ .GetLastCommittedEntry()
+ ->SetIsOverridingUserAgent(true);
+ TestNavigationObserver tab_observer(shell()->web_contents(), 1);
+ shell()->web_contents()->GetController().Reload(ReloadType::NORMAL, false);
+ tab_observer.Wait();
+ ASSERT_TRUE(saw_override);
+
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&ResourceDispatcherHost::SetDelegate,
+ base::Unretained(ResourceDispatcherHostImpl::Get()),
+ old_delegate));
+}
+
} // namespace content
« no previous file with comments | « content/browser/frame_host/navigation_request.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698