OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chrome/browser/extensions/extension_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 base::MessageLoop::current()->RunUntilIdle(); | 449 base::MessageLoop::current()->RunUntilIdle(); |
450 profile_.reset(NULL); | 450 profile_.reset(NULL); |
451 base::MessageLoop::current()->RunUntilIdle(); | 451 base::MessageLoop::current()->RunUntilIdle(); |
452 } | 452 } |
453 | 453 |
454 void ExtensionServiceTestBase::InitializeExtensionService( | 454 void ExtensionServiceTestBase::InitializeExtensionService( |
455 const ExtensionServiceTestBase::ExtensionServiceInitParams& params) { | 455 const ExtensionServiceTestBase::ExtensionServiceInitParams& params) { |
456 TestingProfile::Builder profile_builder; | 456 TestingProfile::Builder profile_builder; |
457 // Create a PrefService that only contains user defined preference values. | 457 // Create a PrefService that only contains user defined preference values. |
458 PrefServiceMockBuilder builder; | 458 PrefServiceMockBuilder builder; |
459 builder.WithUserFilePrefs( | 459 builder.WithUserFilePrefs(params.pref_file, loop_.message_loop_proxy().get()); |
460 params.pref_file, loop_.message_loop_proxy()); | |
461 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( | 460 scoped_refptr<user_prefs::PrefRegistrySyncable> registry( |
462 new user_prefs::PrefRegistrySyncable); | 461 new user_prefs::PrefRegistrySyncable); |
463 scoped_ptr<PrefServiceSyncable> prefs(builder.CreateSyncable(registry.get())); | 462 scoped_ptr<PrefServiceSyncable> prefs(builder.CreateSyncable(registry.get())); |
464 chrome::RegisterUserPrefs(registry.get()); | 463 chrome::RegisterUserPrefs(registry.get()); |
465 profile_builder.SetPrefService(prefs.Pass()); | 464 profile_builder.SetPrefService(prefs.Pass()); |
466 profile_builder.SetPath(params.profile_path); | 465 profile_builder.SetPath(params.profile_path); |
467 profile_ = profile_builder.Build(); | 466 profile_ = profile_builder.Build(); |
468 | 467 |
469 TestExtensionSystem* system = static_cast<TestExtensionSystem*>( | 468 TestExtensionSystem* system = static_cast<TestExtensionSystem*>( |
470 ExtensionSystem::Get(profile_.get())); | 469 ExtensionSystem::Get(profile_.get())); |
471 if (!params.is_first_run) { | 470 if (!params.is_first_run) { |
472 ExtensionPrefs* prefs = system->CreateExtensionPrefs( | 471 ExtensionPrefs* prefs = system->CreateExtensionPrefs( |
473 CommandLine::ForCurrentProcess(), | 472 CommandLine::ForCurrentProcess(), |
474 params.extensions_install_dir); | 473 params.extensions_install_dir); |
475 prefs->SetAlertSystemFirstRun(); | 474 prefs->SetAlertSystemFirstRun(); |
476 } | 475 } |
477 | 476 |
478 service_ = system->CreateExtensionService( | 477 service_ = system->CreateExtensionService( |
479 CommandLine::ForCurrentProcess(), | 478 CommandLine::ForCurrentProcess(), |
480 params.extensions_install_dir, | 479 params.extensions_install_dir, |
481 params.autoupdate_enabled); | 480 params.autoupdate_enabled); |
482 service_->SetFileTaskRunnerForTesting(loop_.message_loop_proxy()); | 481 service_->SetFileTaskRunnerForTesting(loop_.message_loop_proxy().get()); |
483 service_->set_extensions_enabled(true); | 482 service_->set_extensions_enabled(true); |
484 service_->set_show_extensions_prompts(false); | 483 service_->set_show_extensions_prompts(false); |
485 service_->set_install_updates_when_idle_for_test(false); | 484 service_->set_install_updates_when_idle_for_test(false); |
486 | 485 |
487 management_policy_ = | 486 management_policy_ = |
488 ExtensionSystem::Get(profile_.get())->management_policy(); | 487 ExtensionSystem::Get(profile_.get())->management_policy(); |
489 | 488 |
490 // When we start up, we want to make sure there is no external provider, | 489 // When we start up, we want to make sure there is no external provider, |
491 // since the ExtensionService on Windows will use the Registry as a default | 490 // since the ExtensionService on Windows will use the Registry as a default |
492 // provider and if there is something already registered there then it will | 491 // provider and if there is something already registered there then it will |
(...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1873 std::set<std::string> host_permissions; | 1872 std::set<std::string> host_permissions; |
1874 | 1873 |
1875 // Test that the extension is disabled when an API permission is missing from | 1874 // Test that the extension is disabled when an API permission is missing from |
1876 // the extension's granted api permissions preference. (This simulates | 1875 // the extension's granted api permissions preference. (This simulates |
1877 // updating the browser to a version which recognizes a new API permission). | 1876 // updating the browser to a version which recognizes a new API permission). |
1878 SetPref(extension_id, "granted_permissions.api", | 1877 SetPref(extension_id, "granted_permissions.api", |
1879 new ListValue(), "granted_permissions.api"); | 1878 new ListValue(), "granted_permissions.api"); |
1880 service_->ReloadExtensions(); | 1879 service_->ReloadExtensions(); |
1881 | 1880 |
1882 EXPECT_EQ(1u, service_->disabled_extensions()->size()); | 1881 EXPECT_EQ(1u, service_->disabled_extensions()->size()); |
1883 extension = *service_->disabled_extensions()->begin(); | 1882 extension = service_->disabled_extensions()->begin()->get(); |
1884 | 1883 |
1885 ASSERT_TRUE(prefs->IsExtensionDisabled(extension_id)); | 1884 ASSERT_TRUE(prefs->IsExtensionDisabled(extension_id)); |
1886 ASSERT_FALSE(service_->IsExtensionEnabled(extension_id)); | 1885 ASSERT_FALSE(service_->IsExtensionEnabled(extension_id)); |
1887 ASSERT_TRUE(prefs->DidExtensionEscalatePermissions(extension_id)); | 1886 ASSERT_TRUE(prefs->DidExtensionEscalatePermissions(extension_id)); |
1888 | 1887 |
1889 // Now grant and re-enable the extension, making sure the prefs are updated. | 1888 // Now grant and re-enable the extension, making sure the prefs are updated. |
1890 service_->GrantPermissionsAndEnableExtension(extension); | 1889 service_->GrantPermissionsAndEnableExtension(extension); |
1891 | 1890 |
1892 ASSERT_FALSE(prefs->IsExtensionDisabled(extension_id)); | 1891 ASSERT_FALSE(prefs->IsExtensionDisabled(extension_id)); |
1893 ASSERT_TRUE(service_->IsExtensionEnabled(extension_id)); | 1892 ASSERT_TRUE(service_->IsExtensionEnabled(extension_id)); |
(...skipping 22 matching lines...) Expand all Loading... |
1916 api_permissions->Append( | 1915 api_permissions->Append( |
1917 Value::CreateStringValue("tabs")); | 1916 Value::CreateStringValue("tabs")); |
1918 SetPref(extension_id, "granted_permissions.api", | 1917 SetPref(extension_id, "granted_permissions.api", |
1919 api_permissions, "granted_permissions.api"); | 1918 api_permissions, "granted_permissions.api"); |
1920 SetPrefStringSet( | 1919 SetPrefStringSet( |
1921 extension_id, "granted_permissions.scriptable_host", host_permissions); | 1920 extension_id, "granted_permissions.scriptable_host", host_permissions); |
1922 | 1921 |
1923 service_->ReloadExtensions(); | 1922 service_->ReloadExtensions(); |
1924 | 1923 |
1925 EXPECT_EQ(1u, service_->disabled_extensions()->size()); | 1924 EXPECT_EQ(1u, service_->disabled_extensions()->size()); |
1926 extension = *service_->disabled_extensions()->begin(); | 1925 extension = service_->disabled_extensions()->begin()->get(); |
1927 | 1926 |
1928 ASSERT_TRUE(prefs->IsExtensionDisabled(extension_id)); | 1927 ASSERT_TRUE(prefs->IsExtensionDisabled(extension_id)); |
1929 ASSERT_FALSE(service_->IsExtensionEnabled(extension_id)); | 1928 ASSERT_FALSE(service_->IsExtensionEnabled(extension_id)); |
1930 ASSERT_TRUE(prefs->DidExtensionEscalatePermissions(extension_id)); | 1929 ASSERT_TRUE(prefs->DidExtensionEscalatePermissions(extension_id)); |
1931 | 1930 |
1932 // Now grant and re-enable the extension, making sure the prefs are updated. | 1931 // Now grant and re-enable the extension, making sure the prefs are updated. |
1933 service_->GrantPermissionsAndEnableExtension(extension); | 1932 service_->GrantPermissionsAndEnableExtension(extension); |
1934 | 1933 |
1935 ASSERT_TRUE(service_->IsExtensionEnabled(extension_id)); | 1934 ASSERT_TRUE(service_->IsExtensionEnabled(extension_id)); |
1936 ASSERT_FALSE(prefs->DidExtensionEscalatePermissions(extension_id)); | 1935 ASSERT_FALSE(prefs->DidExtensionEscalatePermissions(extension_id)); |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2191 // Load. | 2190 // Load. |
2192 InitializeEmptyExtensionService(); | 2191 InitializeEmptyExtensionService(); |
2193 base::FilePath extension_path = data_dir_ | 2192 base::FilePath extension_path = data_dir_ |
2194 .AppendASCII("theme_i18n"); | 2193 .AppendASCII("theme_i18n"); |
2195 | 2194 |
2196 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); | 2195 extensions::UnpackedInstaller::Create(service_)->Load(extension_path); |
2197 loop_.RunUntilIdle(); | 2196 loop_.RunUntilIdle(); |
2198 EXPECT_EQ(0u, GetErrors().size()); | 2197 EXPECT_EQ(0u, GetErrors().size()); |
2199 ASSERT_EQ(1u, loaded_.size()); | 2198 ASSERT_EQ(1u, loaded_.size()); |
2200 EXPECT_EQ(1u, service_->extensions()->size()); | 2199 EXPECT_EQ(1u, service_->extensions()->size()); |
2201 const Extension* theme = *service_->extensions()->begin(); | 2200 const Extension* theme = service_->extensions()->begin()->get(); |
2202 EXPECT_EQ("name", theme->name()); | 2201 EXPECT_EQ("name", theme->name()); |
2203 EXPECT_EQ("description", theme->description()); | 2202 EXPECT_EQ("description", theme->description()); |
2204 | 2203 |
2205 // Cleanup the "Cached Theme.pak" file. Ideally, this would be installed in a | 2204 // Cleanup the "Cached Theme.pak" file. Ideally, this would be installed in a |
2206 // temporary directory, but it automatically installs to the extension's | 2205 // temporary directory, but it automatically installs to the extension's |
2207 // directory, and we don't want to copy the whole extension for a unittest. | 2206 // directory, and we don't want to copy the whole extension for a unittest. |
2208 base::FilePath theme_file = extension_path.Append(chrome::kThemePackFilename); | 2207 base::FilePath theme_file = extension_path.Append(chrome::kThemePackFilename); |
2209 ASSERT_TRUE(file_util::PathExists(theme_file)); | 2208 ASSERT_TRUE(file_util::PathExists(theme_file)); |
2210 ASSERT_TRUE(file_util::Delete(theme_file, false)); // Not recursive. | 2209 ASSERT_TRUE(file_util::Delete(theme_file, false)); // Not recursive. |
2211 } | 2210 } |
(...skipping 1175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3387 // an extension key. | 3386 // an extension key. |
3388 extensions::ExtensionInfo extension_info( | 3387 extensions::ExtensionInfo extension_info( |
3389 &manifest, std::string(), path, Manifest::UNPACKED); | 3388 &manifest, std::string(), path, Manifest::UNPACKED); |
3390 | 3389 |
3391 // Ensure we can load it with no management policy in place. | 3390 // Ensure we can load it with no management policy in place. |
3392 management_policy_->UnregisterAllProviders(); | 3391 management_policy_->UnregisterAllProviders(); |
3393 EXPECT_EQ(0u, service_->extensions()->size()); | 3392 EXPECT_EQ(0u, service_->extensions()->size()); |
3394 extensions::InstalledLoader(service_).Load(extension_info, false); | 3393 extensions::InstalledLoader(service_).Load(extension_info, false); |
3395 EXPECT_EQ(1u, service_->extensions()->size()); | 3394 EXPECT_EQ(1u, service_->extensions()->size()); |
3396 | 3395 |
3397 const Extension* extension = *(service_->extensions()->begin()); | 3396 const Extension* extension = (service_->extensions()->begin())->get(); |
3398 EXPECT_TRUE(service_->UninstallExtension(extension->id(), false, NULL)); | 3397 EXPECT_TRUE(service_->UninstallExtension(extension->id(), false, NULL)); |
3399 EXPECT_EQ(0u, service_->extensions()->size()); | 3398 EXPECT_EQ(0u, service_->extensions()->size()); |
3400 | 3399 |
3401 // Ensure we cannot load it if management policy prohibits installation. | 3400 // Ensure we cannot load it if management policy prohibits installation. |
3402 extensions::TestManagementPolicyProvider provider_( | 3401 extensions::TestManagementPolicyProvider provider_( |
3403 extensions::TestManagementPolicyProvider::PROHIBIT_LOAD); | 3402 extensions::TestManagementPolicyProvider::PROHIBIT_LOAD); |
3404 management_policy_->RegisterProvider(&provider_); | 3403 management_policy_->RegisterProvider(&provider_); |
3405 | 3404 |
3406 extensions::InstalledLoader(service_).Load(extension_info, false); | 3405 extensions::InstalledLoader(service_).Load(extension_info, false); |
3407 EXPECT_EQ(0u, service_->extensions()->size()); | 3406 EXPECT_EQ(0u, service_->extensions()->size()); |
(...skipping 2612 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6020 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); | 6019 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); |
6021 AddMockExternalProvider(provider); | 6020 AddMockExternalProvider(provider); |
6022 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); | 6021 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); |
6023 | 6022 |
6024 service_->CheckForExternalUpdates(); | 6023 service_->CheckForExternalUpdates(); |
6025 loop_.RunUntilIdle(); | 6024 loop_.RunUntilIdle(); |
6026 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); | 6025 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); |
6027 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); | 6026 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); |
6028 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); | 6027 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); |
6029 } | 6028 } |
OLD | NEW |