OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/plugin_service_impl.h" | 5 #include "content/browser/plugin_service_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
11 #include "content/public/browser/browser_context.h" | 11 #include "content/public/browser/browser_context.h" |
12 #include "content/public/browser/plugin_service_filter.h" | 12 #include "content/public/browser/plugin_service_filter.h" |
13 #include "content/public/browser/resource_context.h" | 13 #include "content/public/browser/resource_context.h" |
14 #include "content/public/browser/web_contents.h" | 14 #include "content/public/browser/web_contents.h" |
15 #include "content/public/common/content_switches.h" | 15 #include "content/public/common/content_switches.h" |
16 #include "content/public/test/test_browser_thread.h" | 16 #include "content/public/test/test_browser_thread.h" |
17 #include "content/public/test/test_utils.h" | 17 #include "content/public/test/test_utils.h" |
18 #include "content/shell/shell.h" | 18 #include "content/shell/shell.h" |
19 #include "content/test/content_browser_test.h" | 19 #include "content/test/content_browser_test.h" |
20 #include "testing/gmock/include/gmock/gmock.h" | 20 #include "testing/gmock/include/gmock/gmock.h" |
21 #include "webkit/plugins/npapi/plugin_utils.h" | |
22 | 21 |
23 namespace content { | 22 namespace content { |
24 | 23 |
25 const char kNPAPITestPluginMimeType[] = "application/vnd.npapi-test"; | 24 const char kNPAPITestPluginMimeType[] = "application/vnd.npapi-test"; |
26 | 25 |
27 void OpenChannel(PluginProcessHost::Client* client) { | 26 void OpenChannel(PluginProcessHost::Client* client) { |
28 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 27 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
29 // Start opening the channel | 28 // Start opening the channel |
30 PluginServiceImpl::GetInstance()->OpenChannelToNpapiPlugin( | 29 PluginServiceImpl::GetInstance()->OpenChannelToNpapiPlugin( |
31 0, 0, GURL(), GURL(), kNPAPITestPluginMimeType, client); | 30 0, 0, GURL(), GURL(), kNPAPITestPluginMimeType, client); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 // running under content_browsertests, these flags won't be needed. | 152 // running under content_browsertests, these flags won't be needed. |
154 // http://crbug.com/90448 | 153 // http://crbug.com/90448 |
155 // switches::kAlwaysAuthorizePlugins | 154 // switches::kAlwaysAuthorizePlugins |
156 command_line->AppendSwitch("always-authorize-plugins"); | 155 command_line->AppendSwitch("always-authorize-plugins"); |
157 } | 156 } |
158 }; | 157 }; |
159 | 158 |
160 // Try to open a channel to the test plugin. Minimal plugin process spawning | 159 // Try to open a channel to the test plugin. Minimal plugin process spawning |
161 // test for the PluginService interface. | 160 // test for the PluginService interface. |
162 IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToPlugin) { | 161 IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToPlugin) { |
163 if (!webkit::npapi::NPAPIPluginsSupported()) | 162 if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported()) |
164 return; | 163 return; |
165 MockPluginProcessHostClient mock_client(GetResourceContext(), false); | 164 MockPluginProcessHostClient mock_client(GetResourceContext(), false); |
166 BrowserThread::PostTask( | 165 BrowserThread::PostTask( |
167 BrowserThread::IO, FROM_HERE, | 166 BrowserThread::IO, FROM_HERE, |
168 base::Bind(&OpenChannel, &mock_client)); | 167 base::Bind(&OpenChannel, &mock_client)); |
169 RunMessageLoop(); | 168 RunMessageLoop(); |
170 } | 169 } |
171 | 170 |
172 IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToDeniedPlugin) { | 171 IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToDeniedPlugin) { |
173 if (!webkit::npapi::NPAPIPluginsSupported()) | 172 if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported()) |
174 return; | 173 return; |
175 MockPluginServiceFilter filter; | 174 MockPluginServiceFilter filter; |
176 PluginServiceImpl::GetInstance()->SetFilter(&filter); | 175 PluginServiceImpl::GetInstance()->SetFilter(&filter); |
177 MockPluginProcessHostClient mock_client(GetResourceContext(), true); | 176 MockPluginProcessHostClient mock_client(GetResourceContext(), true); |
178 BrowserThread::PostTask( | 177 BrowserThread::PostTask( |
179 BrowserThread::IO, FROM_HERE, | 178 BrowserThread::IO, FROM_HERE, |
180 base::Bind(&OpenChannel, &mock_client)); | 179 base::Bind(&OpenChannel, &mock_client)); |
181 RunMessageLoop(); | 180 RunMessageLoop(); |
182 } | 181 } |
183 | 182 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 private: | 299 private: |
301 bool set_plugin_info_called_; | 300 bool set_plugin_info_called_; |
302 bool on_found_plugin_process_host_called_; | 301 bool on_found_plugin_process_host_called_; |
303 PluginProcessHost* host_; | 302 PluginProcessHost* host_; |
304 | 303 |
305 DISALLOW_COPY_AND_ASSIGN(MockCanceledBeforeSentPluginProcessHostClient); | 304 DISALLOW_COPY_AND_ASSIGN(MockCanceledBeforeSentPluginProcessHostClient); |
306 }; | 305 }; |
307 | 306 |
308 IN_PROC_BROWSER_TEST_F( | 307 IN_PROC_BROWSER_TEST_F( |
309 PluginServiceTest, CancelBeforeSentOpenChannelToPluginProcessHost) { | 308 PluginServiceTest, CancelBeforeSentOpenChannelToPluginProcessHost) { |
310 if (!webkit::npapi::NPAPIPluginsSupported()) | 309 if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported()) |
311 return; | 310 return; |
312 ::testing::StrictMock<MockCanceledBeforeSentPluginProcessHostClient> | 311 ::testing::StrictMock<MockCanceledBeforeSentPluginProcessHostClient> |
313 mock_client(GetResourceContext()); | 312 mock_client(GetResourceContext()); |
314 BrowserThread::PostTask( | 313 BrowserThread::PostTask( |
315 BrowserThread::IO, FROM_HERE, | 314 BrowserThread::IO, FROM_HERE, |
316 base::Bind(&OpenChannel, &mock_client)); | 315 base::Bind(&OpenChannel, &mock_client)); |
317 RunMessageLoop(); | 316 RunMessageLoop(); |
318 EXPECT_TRUE(mock_client.get_resource_context_called()); | 317 EXPECT_TRUE(mock_client.get_resource_context_called()); |
319 EXPECT_TRUE(mock_client.set_plugin_info_called()); | 318 EXPECT_TRUE(mock_client.set_plugin_info_called()); |
320 EXPECT_TRUE(mock_client.on_found_plugin_process_host_called()); | 319 EXPECT_TRUE(mock_client.on_found_plugin_process_host_called()); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 | 353 |
355 private: | 354 private: |
356 bool on_sent_plugin_channel_request_called_; | 355 bool on_sent_plugin_channel_request_called_; |
357 | 356 |
358 DISALLOW_COPY_AND_ASSIGN(MockCanceledAfterSentPluginProcessHostClient); | 357 DISALLOW_COPY_AND_ASSIGN(MockCanceledAfterSentPluginProcessHostClient); |
359 }; | 358 }; |
360 | 359 |
361 // Should not attempt to open a channel, since it should be canceled early on. | 360 // Should not attempt to open a channel, since it should be canceled early on. |
362 IN_PROC_BROWSER_TEST_F( | 361 IN_PROC_BROWSER_TEST_F( |
363 PluginServiceTest, CancelAfterSentOpenChannelToPluginProcessHost) { | 362 PluginServiceTest, CancelAfterSentOpenChannelToPluginProcessHost) { |
364 if (!webkit::npapi::NPAPIPluginsSupported()) | 363 if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported()) |
365 return; | 364 return; |
366 ::testing::StrictMock<MockCanceledAfterSentPluginProcessHostClient> | 365 ::testing::StrictMock<MockCanceledAfterSentPluginProcessHostClient> |
367 mock_client(GetResourceContext()); | 366 mock_client(GetResourceContext()); |
368 BrowserThread::PostTask( | 367 BrowserThread::PostTask( |
369 BrowserThread::IO, FROM_HERE, | 368 BrowserThread::IO, FROM_HERE, |
370 base::Bind(&OpenChannel, &mock_client)); | 369 base::Bind(&OpenChannel, &mock_client)); |
371 RunMessageLoop(); | 370 RunMessageLoop(); |
372 EXPECT_TRUE(mock_client.get_resource_context_called()); | 371 EXPECT_TRUE(mock_client.get_resource_context_called()); |
373 EXPECT_TRUE(mock_client.set_plugin_info_called()); | 372 EXPECT_TRUE(mock_client.set_plugin_info_called()); |
374 EXPECT_TRUE(mock_client.on_found_plugin_process_host_called()); | 373 EXPECT_TRUE(mock_client.on_found_plugin_process_host_called()); |
375 EXPECT_TRUE(mock_client.on_sent_plugin_channel_request_called()); | 374 EXPECT_TRUE(mock_client.on_sent_plugin_channel_request_called()); |
376 } | 375 } |
377 | 376 |
378 } // namespace content | 377 } // namespace content |
OLD | NEW |