plugin_prefs_unittest.cc revision ca12bfac764ba476d6cd062bf1dde12cc64c3f40
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/plugins/plugin_prefs.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/at_exit.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 99ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/run_loop.h" 12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_constants.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_paths.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/plugin_service.h" 16ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/public/browser/render_process_host.h" 17ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/public/common/webplugininfo.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h" 19ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "content/public/test/test_utils.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::PluginService; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void CanEnablePluginCallback(const base::Closure& quit_closure, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool expected_can_change, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool did_change) { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_can_change, did_change); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) quit_closure.Run(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::FilePath GetComponentUpdatedPepperFlashPath( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath::StringType& version) { 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(PathService::Get( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &path)); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path = path.Append(version); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) path = path.Append(chrome::kPepperFlashPluginFilename); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return path; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::FilePath GetBundledPepperFlashPath() { 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(PathService::Get(chrome::FILE_PEPPER_FLASH_PLUGIN, &path)); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return path; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochvoid GotPlugins(const base::Closure& quit_closure, 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const std::vector<content::WebPluginInfo>& plugins) { 52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch quit_closure.Run(); 53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 54ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PluginPrefsTest : public ::testing::Test { 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() OVERRIDE { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_ = new PluginPrefs(); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetPolicyEnforcedPluginPatterns( 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::set<string16>& disabled, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::set<string16>& disabled_exceptions, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::set<string16>& enabled) { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->SetPolicyEnforcedPluginPatterns( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled, disabled_exceptions, enabled); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void EnablePluginSynchronously(bool enabled, 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& path, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool expected_can_change) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::RunLoop run_loop; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->EnablePlugin( 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled, path, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&CanEnablePluginCallback, run_loop.QuitClosure(), 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_can_change)); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) run_loop.Run(); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<PluginPrefs> plugin_prefs_; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PluginPrefsTest, DisabledByPolicy) { 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16> disabled_plugins; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(ASCIIToUTF16("Disable this!")); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(ASCIIToUTF16("*Google*")); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPolicyEnforcedPluginPatterns(disabled_plugins, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16>(), 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16>()); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::NO_POLICY, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(ASCIIToUTF16("42"))); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_DISABLED, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin( 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Disable this!"))); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_DISABLED, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(ASCIIToUTF16("Google Earth"))); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PluginPrefsTest, EnabledByPolicy) { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16> enabled_plugins; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.insert(ASCIIToUTF16("Enable that!")); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.insert(ASCIIToUTF16("PDF*")); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPolicyEnforcedPluginPatterns(std::set<string16>(), 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16>(), 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::NO_POLICY, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(ASCIIToUTF16("42"))); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_ENABLED, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(ASCIIToUTF16("Enable that!"))); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_ENABLED, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(ASCIIToUTF16("PDF Reader"))); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PluginPrefsTest, EnabledAndDisabledByPolicy) { 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 k42(ASCIIToUTF16("42")); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kEnabled(ASCIIToUTF16("Enabled")); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kEnabled2(ASCIIToUTF16("Enabled 2")); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kEnabled3(ASCIIToUTF16("Enabled 3")); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kException(ASCIIToUTF16("Exception")); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kException2(ASCIIToUTF16("Exception 2")); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kGoogleMars(ASCIIToUTF16("Google Mars")); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16 kGoogleEarth(ASCIIToUTF16("Google Earth")); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16> disabled_plugins; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16> disabled_plugins_exceptions; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16> enabled_plugins; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(kEnabled); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions.insert(kEnabled); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.insert(kEnabled); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions.insert(kException); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(kEnabled2); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.insert(kEnabled2); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(kException2); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions.insert(kException2); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions.insert(kEnabled3); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.insert(kEnabled3); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPolicyEnforcedPluginPatterns(disabled_plugins, 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::NO_POLICY, plugin_prefs_->PolicyStatusForPlugin(k42)); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_ENABLED, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kEnabled)); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_ENABLED, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kEnabled2)); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_ENABLED, 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kEnabled3)); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::NO_POLICY, 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kException)); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::NO_POLICY, 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kException2)); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.clear(); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions.clear(); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.clear(); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(ASCIIToUTF16("*")); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions.insert(ASCIIToUTF16("*Google*")); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins.insert(kGoogleEarth); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPolicyEnforcedPluginPatterns(disabled_plugins, 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins_exceptions, 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enabled_plugins); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_ENABLED, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kGoogleEarth)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::NO_POLICY, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(kGoogleMars)); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(PluginPrefs::POLICY_DISABLED, 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) plugin_prefs_->PolicyStatusForPlugin(k42)); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 186ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Linux Aura doesn't support NPAPI. 187ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if !(defined(OS_LINUX) && defined(USE_AURA)) 188ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PluginPrefsTest, UnifiedPepperFlashState) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ShadowingAtExitManager at_exit_manager_; // Destroys the PluginService. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 19290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop message_loop; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PluginService::GetInstance()->Init(); 195ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PluginService::GetInstance()->DisablePluginsDiscoveryForTesting(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 component_updated_plugin_name( 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("Component-updated Pepper Flash")); 199ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::WebPluginInfo component_updated_plugin_1( 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) component_updated_plugin_name, 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetComponentUpdatedPepperFlashPath(FILE_PATH_LITERAL("11.3.31.227")), 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("11.3.31.227"), 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("")); 204ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::WebPluginInfo component_updated_plugin_2( 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) component_updated_plugin_name, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetComponentUpdatedPepperFlashPath(FILE_PATH_LITERAL("11.3.31.228")), 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("11.3.31.228"), 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASCIIToUTF16("")); 209ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::WebPluginInfo bundled_plugin(ASCIIToUTF16("Pepper Flash"), 210ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch GetBundledPepperFlashPath(), 211ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ASCIIToUTF16("11.3.31.229"), 212ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch ASCIIToUTF16("")); 213ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 214ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PluginService::GetInstance()->RegisterInternalPlugin( 215ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch component_updated_plugin_1, false); 216ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PluginService::GetInstance()->RegisterInternalPlugin( 217ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch component_updated_plugin_2, false); 218ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PluginService::GetInstance()->RegisterInternalPlugin(bundled_plugin, false); 219ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 220ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if !defined(OS_WIN) 221ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch // Can't go out of process in unit tests. 222ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::RenderProcessHost::SetRunRendererInProcess(true); 223ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 224ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch scoped_refptr<content::MessageLoopRunner> runner = 225ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch new content::MessageLoopRunner; 226ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch PluginService::GetInstance()->GetPlugins( 227ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch base::Bind(&GotPlugins, runner->QuitClosure())); 228ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch runner->Run(); 229ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#if !defined(OS_WIN) 230ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch content::RenderProcessHost::SetRunRendererInProcess(false); 231ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set the state of any of the three plugins will affect the others. 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnablePluginSynchronously(true, component_updated_plugin_1.path, true); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_1)); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_2)); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnablePluginSynchronously(false, bundled_plugin.path, true); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_1)); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_2)); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnablePluginSynchronously(true, component_updated_plugin_2.path, true); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_1)); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_2)); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16> disabled_plugins; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) disabled_plugins.insert(component_updated_plugin_name); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetPolicyEnforcedPluginPatterns(disabled_plugins, 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16>(), 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::set<string16>()); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Policy settings should be respected. 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_1)); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_2)); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnablePluginSynchronously(false, bundled_plugin.path, true); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Trying to change the state of a policy-enforced plugin should not take 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // effect. And it shouldn't change the state of other plugins either, even if 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // they are not restricted by any policy. 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnablePluginSynchronously(true, component_updated_plugin_1.path, false); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_1)); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_2)); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EnablePluginSynchronously(true, bundled_plugin.path, true); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_1)); 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(plugin_prefs_->IsPluginEnabled(component_updated_plugin_2)); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(plugin_prefs_->IsPluginEnabled(bundled_plugin)); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 276ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 277ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#endif 278