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

Unified Diff: content/browser/plugin_service_impl_browsertest.cc

Issue 1182303010: Delete the NPAPI plugin browsertests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/plugin_data_remover_impl_browsertest.cc ('k') | content/content_browsertests.isolate » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/plugin_service_impl_browsertest.cc
diff --git a/content/browser/plugin_service_impl_browsertest.cc b/content/browser/plugin_service_impl_browsertest.cc
deleted file mode 100644
index 9c1e9f172fdb4d4dad5c5b2d739aae611cb9a37a..0000000000000000000000000000000000000000
--- a/content/browser/plugin_service_impl_browsertest.cc
+++ /dev/null
@@ -1,370 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "content/browser/plugin_service_impl.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/command_line.h"
-#include "base/location.h"
-#include "base/path_service.h"
-#include "base/single_thread_task_runner.h"
-#include "base/thread_task_runner_handle.h"
-#include "content/public/browser/browser_context.h"
-#include "content/public/browser/plugin_service_filter.h"
-#include "content/public/browser/resource_context.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/test_browser_thread.h"
-#include "content/public/test/test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "testing/gmock/include/gmock/gmock.h"
-
-namespace content {
-
-const char kNPAPITestPluginMimeType[] = "application/vnd.npapi-test";
-
-void OpenChannel(PluginProcessHost::Client* client) {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- // Start opening the channel
- PluginServiceImpl::GetInstance()->OpenChannelToNpapiPlugin(
- 0, 0, GURL(), GURL(), kNPAPITestPluginMimeType, client);
-}
-
-// Mock up of the Client and the Listener classes that would supply the
-// communication channel with the plugin.
-class MockPluginProcessHostClient : public PluginProcessHost::Client,
- public IPC::Listener {
- public:
- MockPluginProcessHostClient(ResourceContext* context, bool expect_fail)
- : context_(context),
- channel_(NULL),
- set_plugin_info_called_(false),
- expect_fail_(expect_fail) {
- }
-
- ~MockPluginProcessHostClient() override {
- if (channel_)
- BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, channel_);
- }
-
- // PluginProcessHost::Client implementation.
- int ID() override { return 42; }
- bool OffTheRecord() override { return false; }
- ResourceContext* GetResourceContext() override { return context_; }
- void OnFoundPluginProcessHost(PluginProcessHost* host) override {}
- void OnSentPluginChannelRequest() override {}
-
- void OnChannelOpened(const IPC::ChannelHandle& handle) override {
- ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
- ASSERT_TRUE(set_plugin_info_called_);
- ASSERT_TRUE(!channel_);
- channel_ = IPC::Channel::CreateClient(handle, this).release();
- ASSERT_TRUE(channel_->Connect());
- }
-
- void SetPluginInfo(const WebPluginInfo& info) override {
- ASSERT_TRUE(info.mime_types.size());
- ASSERT_EQ(kNPAPITestPluginMimeType, info.mime_types[0].mime_type);
- set_plugin_info_called_ = true;
- }
-
- void OnError() override { Fail(); }
-
- // IPC::Listener implementation.
- bool OnMessageReceived(const IPC::Message& message) override {
- Fail();
- return false;
- }
- void OnChannelConnected(int32 peer_pid) override {
- if (expect_fail_)
- FAIL();
- QuitMessageLoop();
- }
- void OnChannelError() override { Fail(); }
-#if defined(OS_POSIX)
- void OnChannelDenied() override { Fail(); }
- void OnChannelListenError() override { Fail(); }
-#endif
-
- private:
- void Fail() {
- if (!expect_fail_)
- FAIL();
- QuitMessageLoop();
- }
-
- void QuitMessageLoop() {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure());
- }
-
- ResourceContext* context_;
- IPC::Channel* channel_;
- bool set_plugin_info_called_;
- bool expect_fail_;
- DISALLOW_COPY_AND_ASSIGN(MockPluginProcessHostClient);
-};
-
-class MockPluginServiceFilter : public content::PluginServiceFilter {
- public:
- MockPluginServiceFilter() {}
-
- bool IsPluginAvailable(int render_process_id,
- int render_view_id,
- const void* context,
- const GURL& url,
- const GURL& policy_url,
- WebPluginInfo* plugin) override {
- return true;
- }
-
- bool CanLoadPlugin(int render_process_id,
- const base::FilePath& path) override {
- return false;
- }
-};
-
-class PluginServiceTest : public ContentBrowserTest {
- public:
- PluginServiceTest() {}
-
- ResourceContext* GetResourceContext() {
- return shell()->web_contents()->GetBrowserContext()->GetResourceContext();
- }
-
- void SetUpCommandLine(base::CommandLine* command_line) override {
-#if defined(OS_MACOSX)
- base::FilePath browser_directory;
- PathService::Get(base::DIR_MODULE, &browser_directory);
- command_line->AppendSwitchPath(switches::kExtraPluginDir,
- browser_directory.AppendASCII("plugins"));
-#endif
- // TODO(jam): since these plugin tests are running under Chrome, we need to
- // tell it to disable its security features for old plugins. Once this is
- // running under content_browsertests, these flags won't be needed.
- // http://crbug.com/90448
- // switches::kAlwaysAuthorizePlugins
- command_line->AppendSwitch("always-authorize-plugins");
- }
-};
-
-// Try to open a channel to the test plugin. Minimal plugin process spawning
-// test for the PluginService interface.
-IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToPlugin) {
- if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported())
- return;
- MockPluginProcessHostClient mock_client(GetResourceContext(), false);
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&OpenChannel, &mock_client));
- RunMessageLoop();
-}
-
-IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToDeniedPlugin) {
- if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported())
- return;
- MockPluginServiceFilter filter;
- PluginServiceImpl::GetInstance()->SetFilter(&filter);
- MockPluginProcessHostClient mock_client(GetResourceContext(), true);
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&OpenChannel, &mock_client));
- RunMessageLoop();
-}
-
-// A strict mock that fails if any of the methods are called. They shouldn't be
-// called since the request should get canceled before then.
-class MockCanceledPluginServiceClient : public PluginProcessHost::Client {
- public:
- MockCanceledPluginServiceClient(ResourceContext* context)
- : context_(context),
- get_resource_context_called_(false) {
- }
-
- ~MockCanceledPluginServiceClient() override {}
-
- // Client implementation.
- MOCK_METHOD0(ID, int());
- ResourceContext* GetResourceContext() override {
- get_resource_context_called_ = true;
- return context_;
- }
- MOCK_METHOD0(OffTheRecord, bool());
- MOCK_METHOD1(OnFoundPluginProcessHost, void(PluginProcessHost* host));
- MOCK_METHOD0(OnSentPluginChannelRequest, void());
- MOCK_METHOD1(OnChannelOpened, void(const IPC::ChannelHandle& handle));
- MOCK_METHOD1(SetPluginInfo, void(const WebPluginInfo& info));
- MOCK_METHOD0(OnError, void());
-
- bool get_resource_context_called() const {
- return get_resource_context_called_;
- }
-
- private:
- ResourceContext* context_;
- bool get_resource_context_called_;
-
- DISALLOW_COPY_AND_ASSIGN(MockCanceledPluginServiceClient);
-};
-
-void QuitUIMessageLoopFromIOThread() {
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure());
-}
-
-void OpenChannelAndThenCancel(PluginProcessHost::Client* client) {
- OpenChannel(client);
- // Immediately cancel it. This is guaranteed to work since PluginService needs
- // to consult its filter on the FILE thread.
- PluginServiceImpl::GetInstance()->CancelOpenChannelToNpapiPlugin(client);
- // Before we terminate the test, add a roundtrip through the FILE thread to
- // make sure that it's had a chance to post back to the IO thread. Then signal
- // the UI thread to stop and exit the test.
- BrowserThread::PostTaskAndReply(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&base::DoNothing),
- base::Bind(&QuitUIMessageLoopFromIOThread));
-}
-
-// Should not attempt to open a channel, since it should be canceled early on.
-IN_PROC_BROWSER_TEST_F(PluginServiceTest, CancelOpenChannelToPluginService) {
- ::testing::StrictMock<MockCanceledPluginServiceClient> mock_client(
- GetResourceContext());
- BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
- base::Bind(OpenChannelAndThenCancel, &mock_client));
- RunMessageLoop();
- EXPECT_TRUE(mock_client.get_resource_context_called());
-}
-
-class MockCanceledBeforeSentPluginProcessHostClient
- : public MockCanceledPluginServiceClient {
- public:
- MockCanceledBeforeSentPluginProcessHostClient(
- ResourceContext* context)
- : MockCanceledPluginServiceClient(context),
- set_plugin_info_called_(false),
- on_found_plugin_process_host_called_(false),
- host_(NULL) {}
-
- ~MockCanceledBeforeSentPluginProcessHostClient() override {}
-
- // Client implementation.
- void SetPluginInfo(const WebPluginInfo& info) override {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- ASSERT_TRUE(info.mime_types.size());
- ASSERT_EQ(kNPAPITestPluginMimeType, info.mime_types[0].mime_type);
- set_plugin_info_called_ = true;
- }
- void OnFoundPluginProcessHost(PluginProcessHost* host) override {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- set_on_found_plugin_process_host_called();
- set_host(host);
- // This gets called right before we request the plugin<=>renderer channel,
- // so we have to post a task to cancel it.
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::Bind(&PluginProcessHost::CancelPendingRequest,
- base::Unretained(host), this));
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE, base::Bind(&QuitUIMessageLoopFromIOThread));
- }
-
- bool set_plugin_info_called() const {
- return set_plugin_info_called_;
- }
-
- bool on_found_plugin_process_host_called() const {
- return on_found_plugin_process_host_called_;
- }
-
- protected:
- void set_on_found_plugin_process_host_called() {
- on_found_plugin_process_host_called_ = true;
- }
- void set_host(PluginProcessHost* host) {
- host_ = host;
- }
-
- PluginProcessHost* host() const { return host_; }
-
- private:
- bool set_plugin_info_called_;
- bool on_found_plugin_process_host_called_;
- PluginProcessHost* host_;
-
- DISALLOW_COPY_AND_ASSIGN(MockCanceledBeforeSentPluginProcessHostClient);
-};
-
-IN_PROC_BROWSER_TEST_F(
- PluginServiceTest, CancelBeforeSentOpenChannelToPluginProcessHost) {
- if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported())
- return;
- ::testing::StrictMock<MockCanceledBeforeSentPluginProcessHostClient>
- mock_client(GetResourceContext());
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&OpenChannel, &mock_client));
- RunMessageLoop();
- EXPECT_TRUE(mock_client.get_resource_context_called());
- EXPECT_TRUE(mock_client.set_plugin_info_called());
- EXPECT_TRUE(mock_client.on_found_plugin_process_host_called());
-}
-
-class MockCanceledAfterSentPluginProcessHostClient
- : public MockCanceledBeforeSentPluginProcessHostClient {
- public:
- MockCanceledAfterSentPluginProcessHostClient(
- ResourceContext* context)
- : MockCanceledBeforeSentPluginProcessHostClient(context),
- on_sent_plugin_channel_request_called_(false) {}
- ~MockCanceledAfterSentPluginProcessHostClient() override {}
-
- // Client implementation.
-
- int ID() override { return 42; }
- bool OffTheRecord() override { return false; }
-
- // We override this guy again since we don't want to cancel yet.
- void OnFoundPluginProcessHost(PluginProcessHost* host) override {
- DCHECK_CURRENTLY_ON(BrowserThread::IO);
- set_on_found_plugin_process_host_called();
- set_host(host);
- }
-
- void OnSentPluginChannelRequest() override {
- on_sent_plugin_channel_request_called_ = true;
- host()->CancelSentRequest(this);
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE, base::MessageLoop::QuitClosure());
- }
-
- bool on_sent_plugin_channel_request_called() const {
- return on_sent_plugin_channel_request_called_;
- }
-
- private:
- bool on_sent_plugin_channel_request_called_;
-
- DISALLOW_COPY_AND_ASSIGN(MockCanceledAfterSentPluginProcessHostClient);
-};
-
-// Should not attempt to open a channel, since it should be canceled early on.
-IN_PROC_BROWSER_TEST_F(
- PluginServiceTest, CancelAfterSentOpenChannelToPluginProcessHost) {
- if (!PluginServiceImpl::GetInstance()->NPAPIPluginsSupported())
- return;
- ::testing::StrictMock<MockCanceledAfterSentPluginProcessHostClient>
- mock_client(GetResourceContext());
- BrowserThread::PostTask(
- BrowserThread::IO, FROM_HERE,
- base::Bind(&OpenChannel, &mock_client));
- RunMessageLoop();
- EXPECT_TRUE(mock_client.get_resource_context_called());
- EXPECT_TRUE(mock_client.set_plugin_info_called());
- EXPECT_TRUE(mock_client.on_found_plugin_process_host_called());
- EXPECT_TRUE(mock_client.on_sent_plugin_channel_request_called());
-}
-
-} // namespace content
« no previous file with comments | « content/browser/plugin_data_remover_impl_browsertest.cc ('k') | content/content_browsertests.isolate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698