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

Side by Side Diff: headless/lib/embedder_mojo_browsertest.cc

Issue 2181413002: [headless] Remove default browser context. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More fixes Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <memory> 5 #include <memory>
6 #include "base/optional.h"
6 #include "base/path_service.h" 7 #include "base/path_service.h"
7 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
8 #include "base/threading/thread_restrictions.h" 9 #include "base/threading/thread_restrictions.h"
9 #include "content/public/test/browser_test.h" 10 #include "content/public/test/browser_test.h"
10 #include "headless/grit/headless_browsertest_resources.h" 11 #include "headless/grit/headless_browsertest_resources.h"
11 #include "headless/lib/embedder_test.mojom.h" 12 #include "headless/lib/embedder_test.mojom.h"
12 #include "headless/public/domains/network.h" 13 #include "headless/public/domains/network.h"
13 #include "headless/public/domains/page.h" 14 #include "headless/public/domains/page.h"
14 #include "headless/public/domains/runtime.h" 15 #include "headless/public/domains/runtime.h"
15 #include "headless/public/headless_browser.h" 16 #include "headless/public/headless_browser.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 79
79 protected: 80 protected:
80 void RunTest() { 81 void RunTest() {
81 // Using a pak file is idiomatic chromium style, but most embedders probably 82 // Using a pak file is idiomatic chromium style, but most embedders probably
82 // wouln't load the javascript bindings file this way. 83 // wouln't load the javascript bindings file this way.
83 std::string embedder_test_mojom_js = 84 std::string embedder_test_mojom_js =
84 ResourceBundle::GetSharedInstance() 85 ResourceBundle::GetSharedInstance()
85 .GetRawDataResource(IDR_HEADLESS_EMBEDDER_TEST_MOJOM_JS) 86 .GetRawDataResource(IDR_HEADLESS_EMBEDDER_TEST_MOJOM_JS)
86 .as_string(); 87 .as_string();
87 88
89 HeadlessBrowserContext::Builder builder =
90 browser()->CreateBrowserContextBuilder();
91 builder.AddJsMojoBindings("headless/lib/embedder_test.mojom",
92 embedder_test_mojom_js);
88 if (http_policy_ == HttpPolicy::ENABLE_HTTP) { 93 if (http_policy_ == HttpPolicy::ENABLE_HTTP) {
89 browser_context_ = 94 builder.EnableUnsafeNetworkAccessWithMojoBindings(true);
90 browser() 95 }
91 ->CreateBrowserContextBuilder() 96 if (host_resolver_rules_) {
92 .AddJsMojoBindings("headless/lib/embedder_test.mojom", 97 builder.SetHostResolverRules(*host_resolver_rules_);
93 embedder_test_mojom_js)
94 .EnableUnsafeNetworkAccessWithMojoBindings(true)
95 .Build();
96 } else {
97 browser_context_ =
98 browser()
99 ->CreateBrowserContextBuilder()
100 .AddJsMojoBindings("headless/lib/embedder_test.mojom",
101 embedder_test_mojom_js)
102 .Build();
103 } 98 }
104 99
100 browser_context_ = builder.Build();
101
105 web_contents_ = 102 web_contents_ =
106 browser() 103 browser_context_->CreateWebContentsBuilder()
107 ->CreateWebContentsBuilder()
108 .SetInitialURL(GURL(GetInitialUrl())) 104 .SetInitialURL(GURL(GetInitialUrl()))
109 .SetBrowserContext(browser_context_.get())
110 .AddMojoService(base::Bind(&EmbedderMojoTest::CreateTestMojoService, 105 .AddMojoService(base::Bind(&EmbedderMojoTest::CreateTestMojoService,
111 base::Unretained(this))) 106 base::Unretained(this)))
112 .Build(); 107 .Build();
113 108
114 web_contents_->AddObserver(this); 109 web_contents_->AddObserver(this);
115 RunAsynchronousTest(); 110 RunAsynchronousTest();
116 111
117 web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); 112 web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get());
118 web_contents_->RemoveObserver(this); 113 web_contents_->RemoveObserver(this);
119 web_contents_->Close(); 114 web_contents_->Close();
120 web_contents_ = nullptr; 115 web_contents_ = nullptr;
121 116
122 browser_context_.reset(); 117 browser_context_.reset();
123 } 118 }
124 119
125 void CreateTestMojoService( 120 void CreateTestMojoService(
126 mojo::InterfaceRequest<embedder_test::TestEmbedderService> request) { 121 mojo::InterfaceRequest<embedder_test::TestEmbedderService> request) {
127 test_embedder_mojo_bindings_.AddBinding(this, std::move(request)); 122 test_embedder_mojo_bindings_.AddBinding(this, std::move(request));
128 } 123 }
129 124
130 std::unique_ptr<HeadlessBrowserContext> browser_context_; 125 std::unique_ptr<HeadlessBrowserContext> browser_context_;
131 HeadlessWebContents* web_contents_; 126 HeadlessWebContents* web_contents_;
132 std::unique_ptr<HeadlessDevToolsClient> devtools_client_; 127 std::unique_ptr<HeadlessDevToolsClient> devtools_client_;
133 128
134 mojo::BindingSet<embedder_test::TestEmbedderService> 129 mojo::BindingSet<embedder_test::TestEmbedderService>
135 test_embedder_mojo_bindings_; 130 test_embedder_mojo_bindings_;
136 131
137 HttpPolicy http_policy_; 132 HttpPolicy http_policy_;
133 base::Optional<std::string> host_resolver_rules_;
138 }; 134 };
139 135
140 class MojoBindingsTest : public EmbedderMojoTest { 136 class MojoBindingsTest : public EmbedderMojoTest {
141 public: 137 public:
142 void RunMojoTest() override { 138 void RunMojoTest() override {
143 devtools_client_->GetRuntime()->Evaluate( 139 devtools_client_->GetRuntime()->Evaluate(
144 "// Note define() defines a module in the mojo module dependency \n" 140 "// Note define() defines a module in the mojo module dependency \n"
145 "// system. While we don't expose our module, the callback below only\n" 141 "// system. While we don't expose our module, the callback below only\n"
146 "// fires after the requested modules have been loaded. \n" 142 "// fires after the requested modules have been loaded. \n"
147 "define([ \n" 143 "define([ \n"
(...skipping 27 matching lines...) Expand all
175 class MojoBindingsReinstalledAfterNavigation : public EmbedderMojoTest { 171 class MojoBindingsReinstalledAfterNavigation : public EmbedderMojoTest {
176 public: 172 public:
177 MojoBindingsReinstalledAfterNavigation() 173 MojoBindingsReinstalledAfterNavigation()
178 : EmbedderMojoTest(HttpPolicy::ENABLE_HTTP), seen_page_one_(false) { 174 : EmbedderMojoTest(HttpPolicy::ENABLE_HTTP), seen_page_one_(false) {
179 EXPECT_TRUE(embedded_test_server()->Start()); 175 EXPECT_TRUE(embedded_test_server()->Start());
180 } 176 }
181 177
182 void SetUpOnMainThread() override { 178 void SetUpOnMainThread() override {
183 // We want to make sure bindings work across browser initiated cross-origin 179 // We want to make sure bindings work across browser initiated cross-origin
184 // navigation, which is why we're setting up this fake tld. 180 // navigation, which is why we're setting up this fake tld.
185 HeadlessBrowser::Options::Builder builder; 181 host_resolver_rules_ =
186 builder.SetHostResolverRules(
187 base::StringPrintf("MAP not-an-actual-domain.tld 127.0.0.1:%d", 182 base::StringPrintf("MAP not-an-actual-domain.tld 127.0.0.1:%d",
188 embedded_test_server()->host_port_pair().port())); 183 embedded_test_server()->host_port_pair().port());
189 SetBrowserOptions(builder.Build());
190 184
191 EmbedderMojoTest::SetUpOnMainThread(); 185 EmbedderMojoTest::SetUpOnMainThread();
192 } 186 }
193 187
194 void RunMojoTest() override {} 188 void RunMojoTest() override {}
195 189
196 GURL GetInitialUrl() const override { 190 GURL GetInitialUrl() const override {
197 return embedded_test_server()->GetURL("/page_one.html"); 191 return embedded_test_server()->GetURL("/page_one.html");
198 } 192 }
199 193
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 void OnLoadingFailed(const network::LoadingFailedParams& params) override { 236 void OnLoadingFailed(const network::LoadingFailedParams& params) override {
243 // The navigation should fail since HTTP requests are blackholed. 237 // The navigation should fail since HTTP requests are blackholed.
244 EXPECT_EQ(params.GetErrorText(), "net::ERR_FILE_NOT_FOUND"); 238 EXPECT_EQ(params.GetErrorText(), "net::ERR_FILE_NOT_FOUND");
245 FinishAsynchronousTest(); 239 FinishAsynchronousTest();
246 } 240 }
247 }; 241 };
248 242
249 DEVTOOLS_CLIENT_TEST_F(HttpDisabledByDefaultWhenMojoBindingsUsed); 243 DEVTOOLS_CLIENT_TEST_F(HttpDisabledByDefaultWhenMojoBindingsUsed);
250 244
251 } // namespace headless 245 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698