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

Unified Diff: content/browser/plugin_service_impl_browsertest.cc

Issue 12086077: Only permit plug-in loads in the browser if the plug-in isn't blocked or the (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 11 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
Index: content/browser/plugin_service_impl_browsertest.cc
===================================================================
--- content/browser/plugin_service_impl_browsertest.cc (revision 180039)
+++ content/browser/plugin_service_impl_browsertest.cc (working copy)
@@ -9,6 +9,7 @@
#include "base/command_line.h"
#include "base/path_service.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"
@@ -36,10 +37,11 @@
class MockPluginProcessHostClient : public PluginProcessHost::Client,
public IPC::Listener {
public:
- MockPluginProcessHostClient(ResourceContext* context)
+ MockPluginProcessHostClient(ResourceContext* context, bool expect_fail)
: context_(context),
channel_(NULL),
- set_plugin_info_called_(false) {
+ set_plugin_info_called_(false),
+ expect_fail_(expect_fail) {
}
virtual ~MockPluginProcessHostClient() {
@@ -80,6 +82,8 @@
return false;
}
virtual void OnChannelConnected(int32 peer_pid) OVERRIDE {
+ if (expect_fail_)
+ FAIL();
QuitMessageLoop();
}
virtual void OnChannelError() OVERRIDE {
@@ -96,7 +100,8 @@
private:
void Fail() {
- FAIL();
+ if (!expect_fail_)
+ FAIL();
QuitMessageLoop();
}
@@ -108,9 +113,27 @@
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() {}
+
+ virtual bool IsPluginEnabled(
+ int render_process_id,
+ int render_view_id,
+ const void* context,
+ const GURL& url,
+ const GURL& policy_url,
+ webkit::WebPluginInfo* plugin) OVERRIDE { return true; }
+
+ virtual bool CanLoadPlugin(
+ int render_process_id,
+ const FilePath& path) OVERRIDE { return false; }
+};
+
class PluginServiceTest : public ContentBrowserTest {
public:
PluginServiceTest() {}
@@ -140,13 +163,25 @@
IN_PROC_BROWSER_TEST_F(PluginServiceTest, OpenChannelToPlugin) {
if (!webkit::npapi::NPAPIPluginsSupported())
return;
- MockPluginProcessHostClient mock_client(GetResourceContext());
+ 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 (!webkit::npapi::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 {

Powered by Google App Engine
This is Rietveld 408576698