summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-08 11:29:02 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-08 11:29:02 +0000
commitdfdfeb7e012ba3be899721cfd0912de08c0e1f53 (patch)
treeab8871fa02db12e51d6655ac2fe2d54783ec492a
parent9dc6e8b9a45f5e2873271c38371c09e324ff8bd2 (diff)
downloadchromium_src-dfdfeb7e012ba3be899721cfd0912de08c0e1f53.zip
chromium_src-dfdfeb7e012ba3be899721cfd0912de08c0e1f53.tar.gz
chromium_src-dfdfeb7e012ba3be899721cfd0912de08c0e1f53.tar.bz2
Infobar all unknown unsandboxed plug-ins.
BUG=130743 TEST=none Review URL: https://chromiumcodereview.appspot.com/10544003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141197 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/extension_browsertests_misc.cc5
-rw-r--r--chrome/browser/plugin_finder.cc2
-rw-r--r--chrome/browser/plugin_finder_unittest.cc6
-rw-r--r--chrome/browser/prerender/prerender_browsertest.cc1
-rw-r--r--chrome/browser/renderer_host/plugin_info_message_filter.cc19
-rw-r--r--chrome/browser/resources/plugin_metadata/plugins_linux.json12
-rw-r--r--chrome/browser/resources/plugin_metadata/plugins_mac.json12
-rw-r--r--chrome/browser/resources/plugin_metadata/plugins_win.json12
-rw-r--r--content/browser/plugin_data_remover_impl_browsertest.cc8
-rw-r--r--content/browser/plugin_service_impl_browsertest.cc11
10 files changed, 71 insertions, 17 deletions
diff --git a/chrome/browser/extensions/extension_browsertests_misc.cc b/chrome/browser/extensions/extension_browsertests_misc.cc
index 3d62401..4342514 100644
--- a/chrome/browser/extensions/extension_browsertests_misc.cc
+++ b/chrome/browser/extensions/extension_browsertests_misc.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/extensions/extension_process_manager.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/extension_tab_util.h"
+#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
@@ -21,6 +22,7 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/extension_action.h"
+#include "chrome/common/pref_names.h"
#include "chrome/common/url_constants.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/navigation_entry.h"
@@ -721,6 +723,9 @@ IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, WindowOpenNoPrivileges) {
// Tests that a renderer's plugin list is properly updated when we load and
// unload an extension that contains a plugin.
IN_PROC_BROWSER_TEST_F(ExtensionBrowserTest, MAYBE_PluginLoadUnload) {
+ browser()->profile()->GetPrefs()->SetBoolean(prefs::kPluginsAlwaysAuthorize,
+ true);
+
FilePath extension_dir =
test_data_dir_.AppendASCII("uitest").AppendASCII("plugins");
diff --git a/chrome/browser/plugin_finder.cc b/chrome/browser/plugin_finder.cc
index ad8301f..0c03e46 100644
--- a/chrome/browser/plugin_finder.cc
+++ b/chrome/browser/plugin_finder.cc
@@ -81,7 +81,6 @@ PluginInstaller* PluginFinder::FindPlugin(const std::string& mime_type,
}
std::string language_str;
bool success = plugin->GetString("lang", &language_str);
- DCHECK(success);
if (language_str != language)
continue;
ListValue* mime_types = NULL;
@@ -123,7 +122,6 @@ PluginInstaller* PluginFinder::CreateInstaller(
DCHECK(!installers_[identifier]);
std::string url;
bool success = plugin_dict->GetString("url", &url);
- DCHECK(success);
std::string help_url;
plugin_dict->GetString("help_url", &help_url);
string16 name;
diff --git a/chrome/browser/plugin_finder_unittest.cc b/chrome/browser/plugin_finder_unittest.cc
index d6afe1f..bbafbc5 100644
--- a/chrome/browser/plugin_finder_unittest.cc
+++ b/chrome/browser/plugin_finder_unittest.cc
@@ -22,8 +22,10 @@ TEST(PluginFinderTest, JsonSyntax) {
ASSERT_TRUE(plugin_it.value().GetAsDictionary(&plugin));
std::string dummy_str;
bool dummy_bool;
- EXPECT_TRUE(plugin->GetString("lang", &dummy_str));
- EXPECT_TRUE(plugin->GetString("url", &dummy_str));
+ if (plugin->HasKey("lang"))
+ EXPECT_TRUE(plugin->GetString("lang", &dummy_str));
+ if (plugin->HasKey("url"))
+ EXPECT_TRUE(plugin->GetString("url", &dummy_str));
EXPECT_TRUE(plugin->GetString("name", &dummy_str));
if (plugin->HasKey("help_url"))
EXPECT_TRUE(plugin->GetString("help_url", &dummy_str));
diff --git a/chrome/browser/prerender/prerender_browsertest.cc b/chrome/browser/prerender/prerender_browsertest.cc
index 3b7e05b..e9a0955 100644
--- a/chrome/browser/prerender/prerender_browsertest.cc
+++ b/chrome/browser/prerender/prerender_browsertest.cc
@@ -510,6 +510,7 @@ class PrerenderBrowserTest : public InProcessBrowserTest {
switches::kExtraPluginDir,
app_dir.Append(FILE_PATH_LITERAL("plugins")));
#endif
+ command_line->AppendSwitch(switches::kAlwaysAuthorizePlugins);
}
virtual void SetUpOnMainThread() OVERRIDE {
diff --git a/chrome/browser/renderer_host/plugin_info_message_filter.cc b/chrome/browser/renderer_host/plugin_info_message_filter.cc
index f29c9ee..bbf75db 100644
--- a/chrome/browser/renderer_host/plugin_info_message_filter.cc
+++ b/chrome/browser/renderer_host/plugin_info_message_filter.cc
@@ -27,6 +27,7 @@
#endif
using content::PluginService;
+using webkit::WebPluginInfo;
PluginInfoMessageFilter::Context::Context(int render_process_id,
Profile* profile)
@@ -107,9 +108,9 @@ void PluginInfoMessageFilter::OnGetPluginInfo(
void PluginInfoMessageFilter::PluginsLoaded(
const GetPluginInfo_Params& params,
IPC::Message* reply_msg,
- const std::vector<webkit::WebPluginInfo>& plugins) {
+ const std::vector<WebPluginInfo>& plugins) {
ChromeViewHostMsg_GetPluginInfo_Status status;
- webkit::WebPluginInfo plugin;
+ WebPluginInfo plugin;
std::string actual_mime_type;
// This also fills in |actual_mime_type|.
if (!context_.FindEnabledPlugin(params.render_view_id, params.url,
@@ -131,7 +132,7 @@ void PluginInfoMessageFilter::PluginsLoaded(
void PluginInfoMessageFilter::GotPluginFinder(
const GetPluginInfo_Params& params,
IPC::Message* reply_msg,
- const webkit::WebPluginInfo& plugin,
+ const WebPluginInfo& plugin,
const std::string& actual_mime_type,
PluginFinder* plugin_finder) {
ChromeViewHostMsg_GetPluginInfo_Status status;
@@ -143,7 +144,7 @@ void PluginInfoMessageFilter::GotPluginFinder(
void PluginInfoMessageFilter::Context::DecidePluginStatus(
const GetPluginInfo_Params& params,
- const webkit::WebPluginInfo& plugin,
+ const WebPluginInfo& plugin,
PluginFinder* plugin_finder,
ChromeViewHostMsg_GetPluginInfo_Status* status) const {
scoped_ptr<webkit::npapi::PluginGroup> group(
@@ -160,7 +161,7 @@ void PluginInfoMessageFilter::Context::DecidePluginStatus(
#if defined(ENABLE_PLUGIN_INSTALLATION)
PluginInstaller::SecurityStatus plugin_status =
- PluginInstaller::SECURITY_STATUS_UP_TO_DATE;
+ PluginInstaller::SECURITY_STATUS_REQUIRES_AUTHORIZATION;
PluginInstaller* installer =
plugin_finder->FindPluginWithIdentifier(group->identifier());
if (installer)
@@ -181,6 +182,8 @@ void PluginInfoMessageFilter::Context::DecidePluginStatus(
if ((plugin_status ==
PluginInstaller::SECURITY_STATUS_REQUIRES_AUTHORIZATION ||
PluginService::GetInstance()->IsPluginUnstable(plugin.path)) &&
+ plugin.type != WebPluginInfo::PLUGIN_TYPE_PEPPER_IN_PROCESS &&
+ plugin.type != WebPluginInfo::PLUGIN_TYPE_PEPPER_OUT_OF_PROCESS &&
!always_authorize_plugins_.GetValue() &&
plugin_setting != CONTENT_SETTING_BLOCK &&
uses_default_content_setting) {
@@ -201,10 +204,10 @@ bool PluginInfoMessageFilter::Context::FindEnabledPlugin(
const GURL& top_origin_url,
const std::string& mime_type,
ChromeViewHostMsg_GetPluginInfo_Status* status,
- webkit::WebPluginInfo* plugin,
+ WebPluginInfo* plugin,
std::string* actual_mime_type) const {
bool allow_wildcard = true;
- std::vector<webkit::WebPluginInfo> matching_plugins;
+ std::vector<WebPluginInfo> matching_plugins;
std::vector<std::string> mime_types;
PluginService::GetInstance()->GetPluginInfoArray(
url, mime_type, allow_wildcard, &matching_plugins, &mime_types);
@@ -241,7 +244,7 @@ bool PluginInfoMessageFilter::Context::FindEnabledPlugin(
}
void PluginInfoMessageFilter::Context::GetPluginContentSetting(
- const webkit::WebPluginInfo& plugin,
+ const WebPluginInfo& plugin,
const GURL& policy_url,
const GURL& plugin_url,
const std::string& resource,
diff --git a/chrome/browser/resources/plugin_metadata/plugins_linux.json b/chrome/browser/resources/plugin_metadata/plugins_linux.json
index 244831c..3760811 100644
--- a/chrome/browser/resources/plugin_metadata/plugins_linux.json
+++ b/chrome/browser/resources/plugin_metadata/plugins_linux.json
@@ -1,4 +1,16 @@
{
+ "google-talk": {
+ "mime_types": [
+ ],
+ "versions": [
+ {
+ "version": "0",
+ "status": "up_to_date",
+ "comment": "'Google Talk Plugin' and 'Google Talk Plugin Video Accelerator' use two completely different versioning schemes, so we can't define a minimum version."
+ }
+ ],
+ "name": "Google Talk"
+ },
"java-runtime-environment": {
"mime_types": [
"application/x-java-applet",
diff --git a/chrome/browser/resources/plugin_metadata/plugins_mac.json b/chrome/browser/resources/plugin_metadata/plugins_mac.json
index e195e34..62b09f3 100644
--- a/chrome/browser/resources/plugin_metadata/plugins_mac.json
+++ b/chrome/browser/resources/plugin_metadata/plugins_mac.json
@@ -1,4 +1,16 @@
{
+ "google-talk": {
+ "mime_types": [
+ ],
+ "versions": [
+ {
+ "version": "0",
+ "status": "up_to_date",
+ "comment": "'Google Talk Plugin' and 'Google Talk Plugin Video Accelerator' use two completely different versioning schemes, so we can't define a minimum version."
+ }
+ ],
+ "name": "Google Talk"
+ },
"java-runtime-environment": {
"mime_types": [
"application/x-java-applet",
diff --git a/chrome/browser/resources/plugin_metadata/plugins_win.json b/chrome/browser/resources/plugin_metadata/plugins_win.json
index c41cdd6..f1e5924 100644
--- a/chrome/browser/resources/plugin_metadata/plugins_win.json
+++ b/chrome/browser/resources/plugin_metadata/plugins_win.json
@@ -1,4 +1,16 @@
{
+ "google-talk": {
+ "mime_types": [
+ ],
+ "versions": [
+ {
+ "version": "0",
+ "status": "up_to_date",
+ "comment": "'Google Talk Plugin' and 'Google Talk Plugin Video Accelerator' use two completely different versioning schemes, so we can't define a minimum version."
+ }
+ ],
+ "name": "Google Talk"
+ },
"java-runtime-environment": {
"mime_types": [
"application/x-java-applet",
diff --git a/content/browser/plugin_data_remover_impl_browsertest.cc b/content/browser/plugin_data_remover_impl_browsertest.cc
index e9ff41d..c8cfbc02 100644
--- a/content/browser/plugin_data_remover_impl_browsertest.cc
+++ b/content/browser/plugin_data_remover_impl_browsertest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// 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.
@@ -33,6 +33,12 @@ class PluginDataRemoverTest : public InProcessBrowserTest,
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");
}
};
diff --git a/content/browser/plugin_service_impl_browsertest.cc b/content/browser/plugin_service_impl_browsertest.cc
index 55a27cd..b2c9632 100644
--- a/content/browser/plugin_service_impl_browsertest.cc
+++ b/content/browser/plugin_service_impl_browsertest.cc
@@ -122,6 +122,12 @@ class PluginServiceTest : public InProcessBrowserTest {
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");
}
};
@@ -177,10 +183,7 @@ void QuitUIMessageLoopFromIOThread() {
}
void OpenChannelAndThenCancel(PluginProcessHost::Client* client) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
- // Start opening the channel
- PluginServiceImpl::GetInstance()->OpenChannelToNpapiPlugin(
- 0, 0, GURL(), GURL(), kNPAPITestPluginMimeType, 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);