OLD | NEW |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |