| 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" |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 set_plugin_info_called_(false), | 41 set_plugin_info_called_(false), |
| 42 expect_fail_(expect_fail) { | 42 expect_fail_(expect_fail) { |
| 43 } | 43 } |
| 44 | 44 |
| 45 virtual ~MockPluginProcessHostClient() { | 45 virtual ~MockPluginProcessHostClient() { |
| 46 if (channel_) | 46 if (channel_) |
| 47 BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, channel_); | 47 BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, channel_); |
| 48 } | 48 } |
| 49 | 49 |
| 50 // PluginProcessHost::Client implementation. | 50 // PluginProcessHost::Client implementation. |
| 51 virtual int ID() OVERRIDE { return 42; } | 51 virtual int ID() override { return 42; } |
| 52 virtual bool OffTheRecord() OVERRIDE { return false; } | 52 virtual bool OffTheRecord() override { return false; } |
| 53 virtual ResourceContext* GetResourceContext() OVERRIDE { | 53 virtual ResourceContext* GetResourceContext() override { |
| 54 return context_; | 54 return context_; |
| 55 } | 55 } |
| 56 virtual void OnFoundPluginProcessHost(PluginProcessHost* host) OVERRIDE {} | 56 virtual void OnFoundPluginProcessHost(PluginProcessHost* host) override {} |
| 57 virtual void OnSentPluginChannelRequest() OVERRIDE {} | 57 virtual void OnSentPluginChannelRequest() override {} |
| 58 | 58 |
| 59 virtual void OnChannelOpened(const IPC::ChannelHandle& handle) OVERRIDE { | 59 virtual void OnChannelOpened(const IPC::ChannelHandle& handle) override { |
| 60 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 60 ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 61 ASSERT_TRUE(set_plugin_info_called_); | 61 ASSERT_TRUE(set_plugin_info_called_); |
| 62 ASSERT_TRUE(!channel_); | 62 ASSERT_TRUE(!channel_); |
| 63 channel_ = IPC::Channel::CreateClient(handle, this).release(); | 63 channel_ = IPC::Channel::CreateClient(handle, this).release(); |
| 64 ASSERT_TRUE(channel_->Connect()); | 64 ASSERT_TRUE(channel_->Connect()); |
| 65 } | 65 } |
| 66 | 66 |
| 67 virtual void SetPluginInfo(const WebPluginInfo& info) OVERRIDE { | 67 virtual void SetPluginInfo(const WebPluginInfo& info) override { |
| 68 ASSERT_TRUE(info.mime_types.size()); | 68 ASSERT_TRUE(info.mime_types.size()); |
| 69 ASSERT_EQ(kNPAPITestPluginMimeType, info.mime_types[0].mime_type); | 69 ASSERT_EQ(kNPAPITestPluginMimeType, info.mime_types[0].mime_type); |
| 70 set_plugin_info_called_ = true; | 70 set_plugin_info_called_ = true; |
| 71 } | 71 } |
| 72 | 72 |
| 73 virtual void OnError() OVERRIDE { | 73 virtual void OnError() override { |
| 74 Fail(); | 74 Fail(); |
| 75 } | 75 } |
| 76 | 76 |
| 77 // IPC::Listener implementation. | 77 // IPC::Listener implementation. |
| 78 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE { | 78 virtual bool OnMessageReceived(const IPC::Message& message) override { |
| 79 Fail(); | 79 Fail(); |
| 80 return false; | 80 return false; |
| 81 } | 81 } |
| 82 virtual void OnChannelConnected(int32 peer_pid) OVERRIDE { | 82 virtual void OnChannelConnected(int32 peer_pid) override { |
| 83 if (expect_fail_) | 83 if (expect_fail_) |
| 84 FAIL(); | 84 FAIL(); |
| 85 QuitMessageLoop(); | 85 QuitMessageLoop(); |
| 86 } | 86 } |
| 87 virtual void OnChannelError() OVERRIDE { | 87 virtual void OnChannelError() override { |
| 88 Fail(); | 88 Fail(); |
| 89 } | 89 } |
| 90 #if defined(OS_POSIX) | 90 #if defined(OS_POSIX) |
| 91 virtual void OnChannelDenied() OVERRIDE { | 91 virtual void OnChannelDenied() override { |
| 92 Fail(); | 92 Fail(); |
| 93 } | 93 } |
| 94 virtual void OnChannelListenError() OVERRIDE { | 94 virtual void OnChannelListenError() override { |
| 95 Fail(); | 95 Fail(); |
| 96 } | 96 } |
| 97 #endif | 97 #endif |
| 98 | 98 |
| 99 private: | 99 private: |
| 100 void Fail() { | 100 void Fail() { |
| 101 if (!expect_fail_) | 101 if (!expect_fail_) |
| 102 FAIL(); | 102 FAIL(); |
| 103 QuitMessageLoop(); | 103 QuitMessageLoop(); |
| 104 } | 104 } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 118 class MockPluginServiceFilter : public content::PluginServiceFilter { | 118 class MockPluginServiceFilter : public content::PluginServiceFilter { |
| 119 public: | 119 public: |
| 120 MockPluginServiceFilter() {} | 120 MockPluginServiceFilter() {} |
| 121 | 121 |
| 122 virtual bool IsPluginAvailable( | 122 virtual bool IsPluginAvailable( |
| 123 int render_process_id, | 123 int render_process_id, |
| 124 int render_view_id, | 124 int render_view_id, |
| 125 const void* context, | 125 const void* context, |
| 126 const GURL& url, | 126 const GURL& url, |
| 127 const GURL& policy_url, | 127 const GURL& policy_url, |
| 128 WebPluginInfo* plugin) OVERRIDE { return true; } | 128 WebPluginInfo* plugin) override { return true; } |
| 129 | 129 |
| 130 virtual bool CanLoadPlugin( | 130 virtual bool CanLoadPlugin( |
| 131 int render_process_id, | 131 int render_process_id, |
| 132 const base::FilePath& path) OVERRIDE { return false; } | 132 const base::FilePath& path) override { return false; } |
| 133 }; | 133 }; |
| 134 | 134 |
| 135 class PluginServiceTest : public ContentBrowserTest { | 135 class PluginServiceTest : public ContentBrowserTest { |
| 136 public: | 136 public: |
| 137 PluginServiceTest() {} | 137 PluginServiceTest() {} |
| 138 | 138 |
| 139 ResourceContext* GetResourceContext() { | 139 ResourceContext* GetResourceContext() { |
| 140 return shell()->web_contents()->GetBrowserContext()->GetResourceContext(); | 140 return shell()->web_contents()->GetBrowserContext()->GetResourceContext(); |
| 141 } | 141 } |
| 142 | 142 |
| 143 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | 143 virtual void SetUpCommandLine(CommandLine* command_line) override { |
| 144 #if defined(OS_MACOSX) | 144 #if defined(OS_MACOSX) |
| 145 base::FilePath browser_directory; | 145 base::FilePath browser_directory; |
| 146 PathService::Get(base::DIR_MODULE, &browser_directory); | 146 PathService::Get(base::DIR_MODULE, &browser_directory); |
| 147 command_line->AppendSwitchPath(switches::kExtraPluginDir, | 147 command_line->AppendSwitchPath(switches::kExtraPluginDir, |
| 148 browser_directory.AppendASCII("plugins")); | 148 browser_directory.AppendASCII("plugins")); |
| 149 #endif | 149 #endif |
| 150 // TODO(jam): since these plugin tests are running under Chrome, we need to | 150 // TODO(jam): since these plugin tests are running under Chrome, we need to |
| 151 // tell it to disable its security features for old plugins. Once this is | 151 // tell it to disable its security features for old plugins. Once this is |
| 152 // running under content_browsertests, these flags won't be needed. | 152 // running under content_browsertests, these flags won't be needed. |
| 153 // http://crbug.com/90448 | 153 // http://crbug.com/90448 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 public: | 186 public: |
| 187 MockCanceledPluginServiceClient(ResourceContext* context) | 187 MockCanceledPluginServiceClient(ResourceContext* context) |
| 188 : context_(context), | 188 : context_(context), |
| 189 get_resource_context_called_(false) { | 189 get_resource_context_called_(false) { |
| 190 } | 190 } |
| 191 | 191 |
| 192 virtual ~MockCanceledPluginServiceClient() {} | 192 virtual ~MockCanceledPluginServiceClient() {} |
| 193 | 193 |
| 194 // Client implementation. | 194 // Client implementation. |
| 195 MOCK_METHOD0(ID, int()); | 195 MOCK_METHOD0(ID, int()); |
| 196 virtual ResourceContext* GetResourceContext() OVERRIDE { | 196 virtual ResourceContext* GetResourceContext() override { |
| 197 get_resource_context_called_ = true; | 197 get_resource_context_called_ = true; |
| 198 return context_; | 198 return context_; |
| 199 } | 199 } |
| 200 MOCK_METHOD0(OffTheRecord, bool()); | 200 MOCK_METHOD0(OffTheRecord, bool()); |
| 201 MOCK_METHOD1(OnFoundPluginProcessHost, void(PluginProcessHost* host)); | 201 MOCK_METHOD1(OnFoundPluginProcessHost, void(PluginProcessHost* host)); |
| 202 MOCK_METHOD0(OnSentPluginChannelRequest, void()); | 202 MOCK_METHOD0(OnSentPluginChannelRequest, void()); |
| 203 MOCK_METHOD1(OnChannelOpened, void(const IPC::ChannelHandle& handle)); | 203 MOCK_METHOD1(OnChannelOpened, void(const IPC::ChannelHandle& handle)); |
| 204 MOCK_METHOD1(SetPluginInfo, void(const WebPluginInfo& info)); | 204 MOCK_METHOD1(SetPluginInfo, void(const WebPluginInfo& info)); |
| 205 MOCK_METHOD0(OnError, void()); | 205 MOCK_METHOD0(OnError, void()); |
| 206 | 206 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 MockCanceledBeforeSentPluginProcessHostClient( | 250 MockCanceledBeforeSentPluginProcessHostClient( |
| 251 ResourceContext* context) | 251 ResourceContext* context) |
| 252 : MockCanceledPluginServiceClient(context), | 252 : MockCanceledPluginServiceClient(context), |
| 253 set_plugin_info_called_(false), | 253 set_plugin_info_called_(false), |
| 254 on_found_plugin_process_host_called_(false), | 254 on_found_plugin_process_host_called_(false), |
| 255 host_(NULL) {} | 255 host_(NULL) {} |
| 256 | 256 |
| 257 virtual ~MockCanceledBeforeSentPluginProcessHostClient() {} | 257 virtual ~MockCanceledBeforeSentPluginProcessHostClient() {} |
| 258 | 258 |
| 259 // Client implementation. | 259 // Client implementation. |
| 260 virtual void SetPluginInfo(const WebPluginInfo& info) OVERRIDE { | 260 virtual void SetPluginInfo(const WebPluginInfo& info) override { |
| 261 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 261 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 262 ASSERT_TRUE(info.mime_types.size()); | 262 ASSERT_TRUE(info.mime_types.size()); |
| 263 ASSERT_EQ(kNPAPITestPluginMimeType, info.mime_types[0].mime_type); | 263 ASSERT_EQ(kNPAPITestPluginMimeType, info.mime_types[0].mime_type); |
| 264 set_plugin_info_called_ = true; | 264 set_plugin_info_called_ = true; |
| 265 } | 265 } |
| 266 virtual void OnFoundPluginProcessHost(PluginProcessHost* host) OVERRIDE { | 266 virtual void OnFoundPluginProcessHost(PluginProcessHost* host) override { |
| 267 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 267 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 268 set_on_found_plugin_process_host_called(); | 268 set_on_found_plugin_process_host_called(); |
| 269 set_host(host); | 269 set_host(host); |
| 270 // This gets called right before we request the plugin<=>renderer channel, | 270 // This gets called right before we request the plugin<=>renderer channel, |
| 271 // so we have to post a task to cancel it. | 271 // so we have to post a task to cancel it. |
| 272 base::MessageLoop::current()->PostTask( | 272 base::MessageLoop::current()->PostTask( |
| 273 FROM_HERE, | 273 FROM_HERE, |
| 274 base::Bind(&PluginProcessHost::CancelPendingRequest, | 274 base::Bind(&PluginProcessHost::CancelPendingRequest, |
| 275 base::Unretained(host), | 275 base::Unretained(host), |
| 276 this)); | 276 this)); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 : public MockCanceledBeforeSentPluginProcessHostClient { | 323 : public MockCanceledBeforeSentPluginProcessHostClient { |
| 324 public: | 324 public: |
| 325 MockCanceledAfterSentPluginProcessHostClient( | 325 MockCanceledAfterSentPluginProcessHostClient( |
| 326 ResourceContext* context) | 326 ResourceContext* context) |
| 327 : MockCanceledBeforeSentPluginProcessHostClient(context), | 327 : MockCanceledBeforeSentPluginProcessHostClient(context), |
| 328 on_sent_plugin_channel_request_called_(false) {} | 328 on_sent_plugin_channel_request_called_(false) {} |
| 329 virtual ~MockCanceledAfterSentPluginProcessHostClient() {} | 329 virtual ~MockCanceledAfterSentPluginProcessHostClient() {} |
| 330 | 330 |
| 331 // Client implementation. | 331 // Client implementation. |
| 332 | 332 |
| 333 virtual int ID() OVERRIDE { return 42; } | 333 virtual int ID() override { return 42; } |
| 334 virtual bool OffTheRecord() OVERRIDE { return false; } | 334 virtual bool OffTheRecord() override { return false; } |
| 335 | 335 |
| 336 // We override this guy again since we don't want to cancel yet. | 336 // We override this guy again since we don't want to cancel yet. |
| 337 virtual void OnFoundPluginProcessHost(PluginProcessHost* host) OVERRIDE { | 337 virtual void OnFoundPluginProcessHost(PluginProcessHost* host) override { |
| 338 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 338 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 339 set_on_found_plugin_process_host_called(); | 339 set_on_found_plugin_process_host_called(); |
| 340 set_host(host); | 340 set_host(host); |
| 341 } | 341 } |
| 342 | 342 |
| 343 virtual void OnSentPluginChannelRequest() OVERRIDE { | 343 virtual void OnSentPluginChannelRequest() override { |
| 344 on_sent_plugin_channel_request_called_ = true; | 344 on_sent_plugin_channel_request_called_ = true; |
| 345 host()->CancelSentRequest(this); | 345 host()->CancelSentRequest(this); |
| 346 BrowserThread::PostTask( | 346 BrowserThread::PostTask( |
| 347 BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure()); | 347 BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure()); |
| 348 } | 348 } |
| 349 | 349 |
| 350 bool on_sent_plugin_channel_request_called() const { | 350 bool on_sent_plugin_channel_request_called() const { |
| 351 return on_sent_plugin_channel_request_called_; | 351 return on_sent_plugin_channel_request_called_; |
| 352 } | 352 } |
| 353 | 353 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 368 BrowserThread::IO, FROM_HERE, | 368 BrowserThread::IO, FROM_HERE, |
| 369 base::Bind(&OpenChannel, &mock_client)); | 369 base::Bind(&OpenChannel, &mock_client)); |
| 370 RunMessageLoop(); | 370 RunMessageLoop(); |
| 371 EXPECT_TRUE(mock_client.get_resource_context_called()); | 371 EXPECT_TRUE(mock_client.get_resource_context_called()); |
| 372 EXPECT_TRUE(mock_client.set_plugin_info_called()); | 372 EXPECT_TRUE(mock_client.set_plugin_info_called()); |
| 373 EXPECT_TRUE(mock_client.on_found_plugin_process_host_called()); | 373 EXPECT_TRUE(mock_client.on_found_plugin_process_host_called()); |
| 374 EXPECT_TRUE(mock_client.on_sent_plugin_channel_request_called()); | 374 EXPECT_TRUE(mock_client.on_sent_plugin_channel_request_called()); |
| 375 } | 375 } |
| 376 | 376 |
| 377 } // namespace content | 377 } // namespace content |
| OLD | NEW |