Index: chrome/browser/themes/theme_service_unittest.cc |
diff --git a/chrome/browser/themes/theme_service_unittest.cc b/chrome/browser/themes/theme_service_unittest.cc |
index 83114e61641f459faffb7333e683269eaf083896..7f6807eea75c2b1002e96510411ddafdc53fc771 100644 |
--- a/chrome/browser/themes/theme_service_unittest.cc |
+++ b/chrome/browser/themes/theme_service_unittest.cc |
@@ -10,7 +10,6 @@ |
#include "base/path_service.h" |
#include "base/run_loop.h" |
#include "base/strings/stringprintf.h" |
-#include "base/test/scoped_task_environment.h" |
#include "build/build_config.h" |
#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/extensions/extension_service.h" |
@@ -78,7 +77,8 @@ |
installer->Load(temp_dir); |
std::string extension_id = observer.WaitForExtensionLoaded()->id(); |
- WaitForThemeInstall(); |
+ // Let the ThemeService finish creating the theme pack. |
+ base::RunLoop().RunUntilIdle(); |
return extension_id; |
} |
@@ -111,14 +111,6 @@ |
return theme_service->get_theme_supplier(); |
} |
- void WaitForThemeInstall() { |
- content::WindowedNotificationObserver theme_change_observer( |
- chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
- content::Source<ThemeService>( |
- ThemeServiceFactory::GetForProfile(profile()))); |
- theme_change_observer.Wait(); |
- } |
- |
// Alpha blends a non-opaque foreground color against an opaque background. |
// This is not the same as color_utils::AlphaBlend() since it gets the opacity |
// from the foreground color and then does not blend the two colors' alpha |
@@ -171,6 +163,8 @@ |
ThemeService* theme_service = |
ThemeServiceFactory::GetForProfile(profile_.get()); |
theme_service->UseDefaultTheme(); |
+ // Let the ThemeService uninstall unused themes. |
+ base::RunLoop().RunUntilIdle(); |
base::ScopedTempDir temp_dir1; |
ASSERT_TRUE(temp_dir1.CreateUniqueTempDir()); |
@@ -194,19 +188,19 @@ |
// 2) Enabling a disabled theme extension should swap the current theme. |
service_->EnableExtension(extension1_id); |
- WaitForThemeInstall(); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(extension1_id, theme_service->GetThemeID()); |
EXPECT_TRUE(service_->IsExtensionEnabled(extension1_id)); |
EXPECT_TRUE(registry_->GetExtensionById(extension2_id, |
ExtensionRegistry::DISABLED)); |
- // 3) Using RevertToTheme() with a disabled theme should enable and set the |
+ // 3) Using SetTheme() with a disabled theme should enable and set the |
// theme. This is the case when the user reverts to the previous theme |
// via an infobar. |
const extensions::Extension* extension2 = |
service_->GetInstalledExtension(extension2_id); |
- theme_service->RevertToTheme(extension2); |
- WaitForThemeInstall(); |
+ theme_service->SetTheme(extension2); |
+ base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(extension2_id, theme_service->GetThemeID()); |
EXPECT_TRUE(service_->IsExtensionEnabled(extension2_id)); |
EXPECT_TRUE(registry_->GetExtensionById(extension1_id, |
@@ -346,21 +340,18 @@ |
// Show an infobar. |
theme_service->OnInfobarDisplayed(); |
- // Install another theme. The first extension shouldn't be uninstalled yet as |
- // it should be possible to revert to it. Emulate the infobar destroying |
- // itself as a result of the NOTIFICATION_BROWSER_THEME_CHANGED notification. |
+ // Install another theme. Emulate the infobar destroying itself (and |
+ // causing unused themes to be uninstalled) as a result of the |
+ // NOTIFICATION_BROWSER_THEME_CHANGED notification. |
{ |
InfobarDestroyerOnThemeChange destroyer(profile_.get()); |
const std::string& extension2_id = LoadUnpackedThemeAt(temp_dir2.GetPath()); |
- EXPECT_EQ(extension2_id, theme_service->GetThemeID()); |
- } |
- |
- auto* extension1 = service_->GetInstalledExtension(extension1_id); |
- ASSERT_TRUE(extension1); |
+ ASSERT_EQ(extension2_id, theme_service->GetThemeID()); |
+ ASSERT_FALSE(service_->GetInstalledExtension(extension1_id)); |
+ } |
// Check that it is possible to reinstall extension1. |
- ThemeServiceFactory::GetForProfile(profile_.get())->RevertToTheme(extension1); |
- WaitForThemeInstall(); |
+ ASSERT_EQ(extension1_id, LoadUnpackedThemeAt(temp_dir1.GetPath())); |
EXPECT_EQ(extension1_id, theme_service->GetThemeID()); |
} |