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

Side by Side Diff: extensions/browser/guest_view/mime_handler_view/mime_handler_view_browsertest.cc

Issue 2165523004: Force MimeHandlerView to always use BrowserPlugin (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed an Error in Code Created 4 years, 3 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/base_paths.h" 5 #include "base/base_paths.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/files/file_util.h" 7 #include "base/files/file_util.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "chrome/browser/extensions/extension_apitest.h" 12 #include "chrome/browser/extensions/extension_apitest.h"
13 #include "chrome/test/base/ui_test_utils.h" 13 #include "chrome/test/base/ui_test_utils.h"
14 #include "components/guest_view/browser/test_guest_view_manager.h" 14 #include "components/guest_view/browser/test_guest_view_manager.h"
15 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
16 #include "content/public/common/content_switches.h"
16 #include "content/public/test/browser_test_utils.h" 17 #include "content/public/test/browser_test_utils.h"
17 #include "extensions/browser/api/extensions_api_client.h" 18 #include "extensions/browser/api/extensions_api_client.h"
18 #include "extensions/browser/extension_registry.h" 19 #include "extensions/browser/extension_registry.h"
19 #include "extensions/browser/guest_view/extensions_guest_view_manager_delegate.h " 20 #include "extensions/browser/guest_view/extensions_guest_view_manager_delegate.h "
20 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h" 21 #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_gues t.h"
21 #include "extensions/browser/guest_view/mime_handler_view/test_mime_handler_view _guest.h" 22 #include "extensions/browser/guest_view/mime_handler_view/test_mime_handler_view _guest.h"
22 #include "extensions/test/result_catcher.h" 23 #include "extensions/test/result_catcher.h"
23 #include "net/test/embedded_test_server/embedded_test_server.h" 24 #include "net/test/embedded_test_server/embedded_test_server.h"
24 #include "net/url_request/url_request_filter.h" 25 #include "net/url_request/url_request_filter.h"
25 #include "net/url_request/url_request_interceptor.h" 26 #include "net/url_request/url_request_interceptor.h"
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 net::URLRequestFilter::GetInstance()->RemoveUrlHandler(url_); 111 net::URLRequestFilter::GetInstance()->RemoveUrlHandler(url_);
111 } 112 }
112 113
113 const GURL url_; 114 const GURL url_;
114 // |count_| is only accessed on the UI thread. 115 // |count_| is only accessed on the UI thread.
115 int count_; 116 int count_;
116 117
117 DISALLOW_COPY_AND_ASSIGN(URLRequestCounter); 118 DISALLOW_COPY_AND_ASSIGN(URLRequestCounter);
118 }; 119 };
119 120
120 class MimeHandlerViewTest : public ExtensionApiTest { 121 class MimeHandlerViewTest : public ExtensionApiTest,
122 public testing::WithParamInterface<bool> {
121 public: 123 public:
122 MimeHandlerViewTest() { 124 MimeHandlerViewTest() {
123 GuestViewManager::set_factory_for_testing(&factory_); 125 GuestViewManager::set_factory_for_testing(&factory_);
124 } 126 }
125 127
126 ~MimeHandlerViewTest() override {} 128 ~MimeHandlerViewTest() override {}
127 129
128 void SetUpOnMainThread() override { 130 void SetUpOnMainThread() override {
129 ExtensionApiTest::SetUpOnMainThread(); 131 ExtensionApiTest::SetUpOnMainThread();
130 132
131 ASSERT_TRUE(StartEmbeddedTestServer()); 133 ASSERT_TRUE(StartEmbeddedTestServer());
132 embedded_test_server()->ServeFilesFromDirectory( 134 embedded_test_server()->ServeFilesFromDirectory(
133 test_data_dir_.AppendASCII("mime_handler_view")); 135 test_data_dir_.AppendASCII("mime_handler_view"));
134 } 136 }
135 137
138 // TODO(ekaramad): These tests run for OOPIF guests too, except that they
139 // still use BrowserPlugin code path. They are activated to make sure we can
140 // still show PDF when the rest of the guests migrate to OOPIF. Eventually,
141 // MimeHandlerViewGuest will be based on OOPIF and we can remove this comment
142 // (https://crbug.com/642826).
143 void SetUpCommandLine(base::CommandLine* command_line) override {
144 ExtensionApiTest::SetUpCommandLine(command_line);
145
146 bool use_cross_process_frames_for_guests = GetParam();
147 if (use_cross_process_frames_for_guests)
148 command_line->AppendSwitch(switches::kUseCrossProcessFramesForGuests);
149 }
150
136 // TODO(paulmeyer): This function is implemented over and over by the 151 // TODO(paulmeyer): This function is implemented over and over by the
137 // different GuestView test classes. It really needs to be refactored out to 152 // different GuestView test classes. It really needs to be refactored out to
138 // some kind of GuestViewTest base class. 153 // some kind of GuestViewTest base class.
139 TestGuestViewManager* GetGuestViewManager() { 154 TestGuestViewManager* GetGuestViewManager() {
140 TestGuestViewManager* manager = static_cast<TestGuestViewManager*>( 155 TestGuestViewManager* manager = static_cast<TestGuestViewManager*>(
141 TestGuestViewManager::FromBrowserContext(browser()->profile())); 156 TestGuestViewManager::FromBrowserContext(browser()->profile()));
142 // TestGuestViewManager::WaitForSingleGuestCreated can and will get called 157 // TestGuestViewManager::WaitForSingleGuestCreated can and will get called
143 // before a guest is created. Since GuestViewManager is usually not created 158 // before a guest is created. Since GuestViewManager is usually not created
144 // until the first guest is created, this means that |manager| will be 159 // until the first guest is created, this means that |manager| will be
145 // nullptr if trying to use the manager to wait for the first guest. Because 160 // nullptr if trying to use the manager to wait for the first guest. Because
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 } 196 }
182 197
183 void RunTest(const std::string& path) { 198 void RunTest(const std::string& path) {
184 RunTestWithUrl(embedded_test_server()->GetURL("/" + path)); 199 RunTestWithUrl(embedded_test_server()->GetURL("/" + path));
185 } 200 }
186 201
187 private: 202 private:
188 TestGuestViewManagerFactory factory_; 203 TestGuestViewManagerFactory factory_;
189 }; 204 };
190 205
191 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, PostMessage) { 206 INSTANTIATE_TEST_CASE_P(MimeHandlerViewTests,
207 MimeHandlerViewTest,
208 testing::Bool());
209
210 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, PostMessage) {
192 RunTest("test_postmessage.html"); 211 RunTest("test_postmessage.html");
193 } 212 }
194 213
195 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, Basic) { 214 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, Basic) {
196 RunTest("testBasic.csv"); 215 RunTest("testBasic.csv");
197 } 216 }
198 217
199 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, Embedded) { 218 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, Embedded) {
200 RunTest("test_embedded.html"); 219 RunTest("test_embedded.html");
201 } 220 }
202 221
203 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, Iframe) { 222 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, Iframe) {
204 RunTest("test_iframe.html"); 223 RunTest("test_iframe.html");
205 } 224 }
206 225
207 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, Abort) { 226 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, Abort) {
208 RunTest("testAbort.csv"); 227 RunTest("testAbort.csv");
209 } 228 }
210 229
211 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, NonAsciiHeaders) { 230 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, NonAsciiHeaders) {
212 RunTest("testNonAsciiHeaders.csv"); 231 RunTest("testNonAsciiHeaders.csv");
213 } 232 }
214 233
215 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, DataUrl) { 234 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, DataUrl) {
216 const char* kDataUrlCsv = "data:text/csv;base64,Y29udGVudCB0byByZWFkCg=="; 235 const char* kDataUrlCsv = "data:text/csv;base64,Y29udGVudCB0byByZWFkCg==";
217 RunTestWithUrl(GURL(kDataUrlCsv)); 236 RunTestWithUrl(GURL(kDataUrlCsv));
218 } 237 }
219 238
220 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, EmbeddedDataUrlObject) { 239 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, EmbeddedDataUrlObject) {
221 RunTest("test_embedded_data_url_object.html"); 240 RunTest("test_embedded_data_url_object.html");
222 } 241 }
223 242
224 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, EmbeddedDataUrlEmbed) { 243 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, EmbeddedDataUrlEmbed) {
225 RunTest("test_embedded_data_url_embed.html"); 244 RunTest("test_embedded_data_url_embed.html");
226 } 245 }
227 246
228 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, EmbeddedDataUrlLong) { 247 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, EmbeddedDataUrlLong) {
229 RunTest("test_embedded_data_url_long.html"); 248 RunTest("test_embedded_data_url_long.html");
230 } 249 }
231 250
232 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, ResizeBeforeAttach) { 251 IN_PROC_BROWSER_TEST_P(MimeHandlerViewTest, ResizeBeforeAttach) {
233 // Delay the creation of the guest's WebContents in order to delay the guest's 252 // Delay the creation of the guest's WebContents in order to delay the guest's
234 // attachment to the embedder. This will allow us to resize the <object> tag 253 // attachment to the embedder. This will allow us to resize the <object> tag
235 // after the guest is created, but before it is attached in 254 // after the guest is created, but before it is attached in
236 // "test_resize_before_attach.html". 255 // "test_resize_before_attach.html".
237 TestMimeHandlerViewGuest::DelayNextCreateWebContents(500); 256 TestMimeHandlerViewGuest::DelayNextCreateWebContents(500);
238 RunTest("test_resize_before_attach.html"); 257 RunTest("test_resize_before_attach.html");
239 258
240 // Wait for the guest to attach. 259 // Wait for the guest to attach.
241 content::WebContents* guest_web_contents = 260 content::WebContents* guest_web_contents =
242 GetGuestViewManager()->WaitForSingleGuestCreated(); 261 GetGuestViewManager()->WaitForSingleGuestCreated();
243 TestMimeHandlerViewGuest* guest = static_cast<TestMimeHandlerViewGuest*>( 262 TestMimeHandlerViewGuest* guest = static_cast<TestMimeHandlerViewGuest*>(
244 MimeHandlerViewGuest::FromWebContents(guest_web_contents)); 263 MimeHandlerViewGuest::FromWebContents(guest_web_contents));
245 guest->WaitForGuestAttached(); 264 guest->WaitForGuestAttached();
246 265
247 // Ensure that the guest has the correct size after it has attached. 266 // Ensure that the guest has the correct size after it has attached.
248 auto guest_size = guest->size(); 267 auto guest_size = guest->size();
249 CHECK_EQ(guest_size.width(), 500); 268 CHECK_EQ(guest_size.width(), 500);
250 CHECK_EQ(guest_size.height(), 400); 269 CHECK_EQ(guest_size.height(), 400);
251 } 270 }
252 271
253 // Regression test for crbug.com/587709. 272 // Regression test for crbug.com/587709.
254 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, SingleRequest) { 273 IN_PROC_BROWSER_TEST_F(MimeHandlerViewTest, SingleRequest) {
255 GURL url(embedded_test_server()->GetURL("/testBasic.csv")); 274 GURL url(embedded_test_server()->GetURL("/testBasic.csv"));
256 URLRequestCounter request_counter(url); 275 URLRequestCounter request_counter(url);
257 RunTest("testBasic.csv"); 276 RunTest("testBasic.csv");
258 EXPECT_EQ(1, request_counter.GetCount()); 277 EXPECT_EQ(1, request_counter.GetCount());
259 } 278 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698