| Index: chrome/browser/extensions/extension_prefs_unittest.cc
|
| diff --git a/chrome/browser/extensions/extension_prefs_unittest.cc b/chrome/browser/extensions/extension_prefs_unittest.cc
|
| index 3d937d8c5d73291d70b54ca2db64f90fc29eebb5..29c9c94eb53b8623c2f336582e6de095982db00e 100644
|
| --- a/chrome/browser/extensions/extension_prefs_unittest.cc
|
| +++ b/chrome/browser/extensions/extension_prefs_unittest.cc
|
| @@ -10,11 +10,13 @@
|
| #include "base/stringprintf.h"
|
| #include "chrome/browser/extensions/extension_prefs.h"
|
| #include "chrome/browser/extensions/test_extension_prefs.h"
|
| +#include "chrome/browser/extensions/extension_pref_value_map.h"
|
| #include "chrome/browser/prefs/pref_change_registrar.h"
|
| #include "chrome/browser/prefs/scoped_user_pref_update.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/extensions/extension_constants.h"
|
| #include "chrome/common/extensions/extension_permission_set.h"
|
| +#include "chrome/common/string_ordinal.h"
|
| #include "content/public/browser/notification_details.h"
|
| #include "content/public/browser/notification_source.h"
|
| #include "content/test/notification_observer_mock.h"
|
| @@ -654,7 +656,8 @@ class ExtensionPrefsOnExtensionInstalled : public ExtensionPrefsTest {
|
| extension_ = prefs_.AddExtension("on_extension_installed");
|
| EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id()));
|
| prefs()->OnExtensionInstalled(
|
| - extension_.get(), Extension::DISABLED, false, -1);
|
| + extension_.get(), Extension::DISABLED, false,
|
| + StringOrdinal());
|
| }
|
|
|
| virtual void Verify() {
|
| @@ -667,85 +670,109 @@ class ExtensionPrefsOnExtensionInstalled : public ExtensionPrefsTest {
|
| TEST_F(ExtensionPrefsOnExtensionInstalled,
|
| ExtensionPrefsOnExtensionInstalled) {}
|
|
|
| -class ExtensionPrefsAppLaunchIndex : public ExtensionPrefsTest {
|
| +class ExtensionPrefsAppLaunchOrdinal : public ExtensionPrefsTest {
|
| public:
|
| virtual void Initialize() {
|
| // No extensions yet.
|
| - EXPECT_EQ(0, prefs()->GetNextAppLaunchIndex(0));
|
| + StringOrdinal page = StringOrdinal::CreateInitialOrdinal();
|
| + EXPECT_TRUE(StringOrdinal::CreateInitialOrdinal().Equal(
|
| + prefs()->CreateNextAppLaunchOrdinal(page)));
|
|
|
| extension_ = prefs_.AddApp("on_extension_installed");
|
| EXPECT_FALSE(prefs()->IsExtensionDisabled(extension_->id()));
|
| prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED,
|
| - false, -1);
|
| + false, StringOrdinal());
|
| }
|
|
|
| virtual void Verify() {
|
| - int launch_index = prefs()->GetAppLaunchIndex(extension_->id());
|
| - // Extension should have been assigned a launch index > 0.
|
| - EXPECT_GT(launch_index, 0);
|
| - EXPECT_EQ(launch_index + 1, prefs()->GetNextAppLaunchIndex(0));
|
| - // Set a new launch index of one higher and verify.
|
| - prefs()->SetAppLaunchIndex(extension_->id(),
|
| - prefs()->GetNextAppLaunchIndex(0));
|
| - int new_launch_index = prefs()->GetAppLaunchIndex(extension_->id());
|
| - EXPECT_EQ(launch_index + 1, new_launch_index);
|
| -
|
| - // This extension doesn't exist, so it should return -1.
|
| - EXPECT_EQ(-1, prefs()->GetAppLaunchIndex("foo"));
|
| -
|
| - // The second page doesn't have any apps so its next launch index should
|
| - // still be 0.
|
| - EXPECT_EQ(prefs()->GetNextAppLaunchIndex(1), 0);
|
| + StringOrdinal launch_ordinal =
|
| + prefs()->GetAppLaunchOrdinal(extension_->id());
|
| + StringOrdinal page_ordinal = StringOrdinal::CreateInitialOrdinal();
|
| +
|
| + // Extension should have been assigned a valid StringOrdinal.
|
| + EXPECT_TRUE(launch_ordinal.IsValid());
|
| + EXPECT_TRUE(launch_ordinal.LessThan(
|
| + prefs()->CreateNextAppLaunchOrdinal(page_ordinal)));
|
| + // Set a new launch ordinal of and verify it comes after.
|
| + prefs()->SetAppLaunchOrdinal(
|
| + extension_->id(),
|
| + prefs()->CreateNextAppLaunchOrdinal(page_ordinal));
|
| + StringOrdinal new_launch_ordinal =
|
| + prefs()->GetAppLaunchOrdinal(extension_->id());
|
| + EXPECT_TRUE(launch_ordinal.LessThan(new_launch_ordinal));
|
| +
|
| + // This extension doesn't exist, so it should return an invalid
|
| + // StringOrdinal.
|
| + StringOrdinal invalid_app_launch_ordinal =
|
| + prefs()->GetAppLaunchOrdinal("foo");
|
| + EXPECT_FALSE(invalid_app_launch_ordinal.IsValid());
|
| + EXPECT_EQ(-1, prefs()->PageStringOrdinalAsInteger(
|
| + invalid_app_launch_ordinal));
|
| +
|
| + // The second page doesn't have any apps so its next launch ordinal should
|
| + // be the first launch ordinal.
|
| + StringOrdinal next_page = page_ordinal.CreateAfter();
|
| + StringOrdinal next_page_app_launch_ordinal =
|
| + prefs()->CreateNextAppLaunchOrdinal(next_page);
|
| + EXPECT_TRUE(next_page_app_launch_ordinal.Equal(
|
| + prefs()->CreateFirstAppLaunchOrdinal(next_page)));
|
| }
|
|
|
| private:
|
| scoped_refptr<Extension> extension_;
|
| };
|
| -TEST_F(ExtensionPrefsAppLaunchIndex, ExtensionPrefsAppLaunchIndex) {}
|
| +TEST_F(ExtensionPrefsAppLaunchOrdinal, ExtensionPrefsAppLaunchOrdinal) {}
|
|
|
| -class ExtensionPrefsPageIndex : public ExtensionPrefsTest {
|
| +class ExtensionPrefsPageOrdinal : public ExtensionPrefsTest {
|
| public:
|
| virtual void Initialize() {
|
| - extension_ = prefs_.AddApp("page_index");
|
| - // Install to page 3 (index 2).
|
| + extension_ = prefs_.AddApp("page_ordinal");
|
| + // Install with a page preference.
|
| + StringOrdinal page = StringOrdinal::CreateInitialOrdinal();
|
| prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED,
|
| - false, 2);
|
| - EXPECT_EQ(2, prefs()->GetPageIndex(extension_->id()));
|
| + false, page);
|
| + EXPECT_TRUE(page.Equal(prefs()->GetPageOrdinal(extension_->id())));
|
| + EXPECT_EQ(0, prefs()->PageStringOrdinalAsInteger(page));
|
|
|
| - scoped_refptr<Extension> extension2 = prefs_.AddApp("page_index_2");
|
| + scoped_refptr<Extension> extension2 = prefs_.AddApp("page_ordinal_2");
|
| // Install without any page preference.
|
| prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED,
|
| - false, -1);
|
| - EXPECT_EQ(0, prefs()->GetPageIndex(extension_->id()));
|
| + false, StringOrdinal());
|
| + EXPECT_TRUE(prefs()->GetPageOrdinal(extension_->id()).IsValid());
|
| }
|
|
|
| virtual void Verify() {
|
| - // Set the page index.
|
| - prefs()->SetPageIndex(extension_->id(), 1);
|
| - // Verify the page index.
|
| - EXPECT_EQ(1, prefs()->GetPageIndex(extension_->id()));
|
| + StringOrdinal old_page = prefs()->GetPageOrdinal(extension_->id());
|
| + StringOrdinal new_page = old_page.CreateAfter();
|
|
|
| - // This extension doesn't exist, so it should return -1.
|
| - EXPECT_EQ(-1, prefs()->GetPageIndex("foo"));
|
| + // Set the page ordinal.
|
| + prefs()->SetPageOrdinal(extension_->id(), new_page);
|
| + // Verify the page ordinal.
|
| + EXPECT_TRUE(new_page.Equal(prefs()->GetPageOrdinal(extension_->id())));
|
| + EXPECT_EQ(1, prefs()->PageStringOrdinalAsInteger(new_page));
|
| +
|
| + // This extension doesn't exist, so it should return an invalid
|
| + // StringOrdinal.
|
| + EXPECT_FALSE(prefs()->GetPageOrdinal("foo").IsValid());
|
| }
|
|
|
| private:
|
| scoped_refptr<Extension> extension_;
|
| };
|
| -TEST_F(ExtensionPrefsPageIndex, ExtensionPrefsPageIndex) {}
|
| +TEST_F(ExtensionPrefsPageOrdinal, ExtensionPrefsPageOrdinal) {}
|
|
|
| class ExtensionPrefsAppLocation : public ExtensionPrefsTest {
|
| public:
|
| virtual void Initialize() {
|
| extension_ = prefs_.AddExtension("not_an_app");
|
| - // Non-apps should not have any app launch index or page index.
|
| + // Non-apps should not have any app launch ordinal or page ordinal.
|
| prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED,
|
| - false, 0);
|
| + false, StringOrdinal());
|
| }
|
|
|
| virtual void Verify() {
|
| - EXPECT_EQ(-1, prefs()->GetAppLaunchIndex(extension_->id()));
|
| - EXPECT_EQ(-1, prefs()->GetPageIndex(extension_->id()));
|
| + EXPECT_FALSE(prefs()->GetAppLaunchOrdinal(extension_->id()).IsValid());
|
| + EXPECT_FALSE(prefs()->GetPageOrdinal(extension_->id()).IsValid());
|
| }
|
|
|
| private:
|
| @@ -759,7 +786,7 @@ class ExtensionPrefsAppDraggedByUser : public ExtensionPrefsTest {
|
| extension_ = prefs_.AddExtension("on_extension_installed");
|
| EXPECT_FALSE(prefs()->WasAppDraggedByUser(extension_->id()));
|
| prefs()->OnExtensionInstalled(extension_.get(), Extension::ENABLED,
|
| - false, -1);
|
| + false, StringOrdinal());
|
| }
|
|
|
| virtual void Verify() {
|
| @@ -909,7 +936,8 @@ class ExtensionPrefsPreferencesBase : public ExtensionPrefsTest {
|
| Extension* extensions[] = {ext1_, ext2_, ext3_};
|
| for (int i = 0; i < 3; ++i) {
|
| if (ext == extensions[i] && !installed[i]) {
|
| - prefs()->OnExtensionInstalled(ext, Extension::ENABLED, false, -1);
|
| + prefs()->OnExtensionInstalled(ext, Extension::ENABLED,
|
| + false, StringOrdinal());
|
| installed[i] = true;
|
| break;
|
| }
|
| @@ -1216,3 +1244,117 @@ class ExtensionPrefsDisableExtensions
|
| int iteration_;
|
| };
|
| TEST_F(ExtensionPrefsDisableExtensions, ExtensionPrefsDisableExtensions) {}
|
| +
|
| +// Tests the application index to ordinal migration code. This should be removed
|
| +// when the migrate code is taken out.
|
| +class ExtensionPrefsMigrateAppIndex : public ExtensionPrefsPreferencesBase {
|
| + public:
|
| + ExtensionPrefsMigrateAppIndex() {}
|
| + virtual ~ExtensionPrefsMigrateAppIndex() {}
|
| + virtual void Initialize() {
|
| + // A preference determining the order of which the apps appear on the NTP.
|
| + const char kPrefAppLaunchIndexDeprecated[] = "app_launcher_index";
|
| + // A preference determining the page on which an app appears in the NTP.
|
| + const char kPrefPageIndexDeprecated[] = "page_index";
|
| +
|
| + // Setup the deprecated preferences.
|
| + prefs()->UpdateExtensionPref(ext1_->id(),
|
| + kPrefAppLaunchIndexDeprecated,
|
| + Value::CreateIntegerValue(0));
|
| + prefs()->UpdateExtensionPref(ext1_->id(),
|
| + kPrefPageIndexDeprecated,
|
| + Value::CreateIntegerValue(0));
|
| +
|
| + prefs()->UpdateExtensionPref(ext2_->id(),
|
| + kPrefAppLaunchIndexDeprecated,
|
| + Value::CreateIntegerValue(1));
|
| + prefs()->UpdateExtensionPref(ext2_->id(),
|
| + kPrefPageIndexDeprecated,
|
| + Value::CreateIntegerValue(0));
|
| +
|
| + prefs()->UpdateExtensionPref(ext3_->id(),
|
| + kPrefAppLaunchIndexDeprecated,
|
| + Value::CreateIntegerValue(0));
|
| + prefs()->UpdateExtensionPref(ext3_->id(),
|
| + kPrefPageIndexDeprecated,
|
| + Value::CreateIntegerValue(1));
|
| +
|
| + // We insert the ids in reserve order so that we have to deal with the
|
| + // element on the 2nd page before the 1st page is seen.
|
| + ExtensionPrefs::ExtensionIdSet ids;
|
| + ids.push_back(ext3_->id());
|
| + ids.push_back(ext2_->id());
|
| + ids.push_back(ext1_->id());
|
| +
|
| + prefs_.prefs()->MigrateAppIndex(ids);
|
| + }
|
| + virtual void Verify() {
|
| + StringOrdinal first_ordinal = StringOrdinal::CreateInitialOrdinal();
|
| +
|
| + EXPECT_TRUE(first_ordinal.Equal(prefs()->GetAppLaunchOrdinal(ext1_->id())));
|
| + EXPECT_TRUE(first_ordinal.LessThan(
|
| + prefs()->GetAppLaunchOrdinal(ext2_->id())));
|
| + EXPECT_TRUE(first_ordinal.Equal(prefs()->GetAppLaunchOrdinal(ext3_->id())));
|
| +
|
| + EXPECT_TRUE(first_ordinal.Equal(prefs()->GetPageOrdinal(ext1_->id())));
|
| + EXPECT_TRUE(first_ordinal.Equal(prefs()->GetPageOrdinal(ext2_->id())));
|
| + EXPECT_TRUE(first_ordinal.LessThan(prefs()->GetPageOrdinal(ext3_->id())));
|
| + }
|
| +};
|
| +TEST_F(ExtensionPrefsMigrateAppIndex, ExtensionPrefsMigrateAppIndex) {}
|
| +
|
| +class ExtensionPrefsGetMinAndMaxLaunchOrdinalsOnPage :
|
| + public ExtensionPrefsPreferencesBase {
|
| + public:
|
| + ExtensionPrefsGetMinAndMaxLaunchOrdinalsOnPage() {}
|
| + virtual ~ExtensionPrefsGetMinAndMaxLaunchOrdinalsOnPage() {}
|
| + virtual void Initialize() {
|
| + DictionaryValue simple_dict;
|
| + simple_dict.SetString(keys::kVersion, "1.0.0.0");
|
| + simple_dict.SetString(keys::kName, "unused");
|
| + simple_dict.SetString(keys::kApp, "true");
|
| + simple_dict.SetString(keys::kLaunchLocalPath, "fake.html");
|
| +
|
| + std::string error;
|
| + app1_scoped_ = Extension::Create(
|
| + prefs_.temp_dir().AppendASCII("app1_"), Extension::EXTERNAL_PREF,
|
| + simple_dict, Extension::STRICT_ERROR_CHECKS, &error);
|
| + prefs()->OnExtensionInstalled(app1_scoped_.get(),
|
| + Extension::ENABLED,
|
| + false,
|
| + StringOrdinal());
|
| +
|
| + app2_scoped_ = Extension::Create(
|
| + prefs_.temp_dir().AppendASCII("app2_"), Extension::EXTERNAL_PREF,
|
| + simple_dict, Extension::STRICT_ERROR_CHECKS, &error);
|
| + prefs()->OnExtensionInstalled(app2_scoped_.get(),
|
| + Extension::ENABLED,
|
| + false,
|
| + StringOrdinal());
|
| + }
|
| + virtual void Verify() {
|
| + StringOrdinal page = StringOrdinal::CreateInitialOrdinal();
|
| + StringOrdinal max, min;
|
| +
|
| + prefs()->GetMinAndMaxAppLaunchOrdinalsOnPage(page, &min, &max);
|
| + EXPECT_TRUE(min.IsValid());
|
| + EXPECT_TRUE(max.IsValid());
|
| + EXPECT_TRUE(min.LessThan(max));
|
| +
|
| + // Ensure that the min and max values aren't set for empty pages.
|
| + min = StringOrdinal();
|
| + max = StringOrdinal();
|
| + StringOrdinal empty_page = page.CreateAfter();
|
| + EXPECT_FALSE(min.IsValid());
|
| + EXPECT_FALSE(max.IsValid());
|
| + prefs()->GetMinAndMaxAppLaunchOrdinalsOnPage(empty_page, &min, &max);
|
| + EXPECT_FALSE(min.IsValid());
|
| + EXPECT_FALSE(max.IsValid());
|
| + }
|
| +
|
| + private:
|
| + scoped_refptr<Extension> app1_scoped_;
|
| + scoped_refptr<Extension> app2_scoped_;
|
| +};
|
| +TEST_F(ExtensionPrefsGetMinAndMaxLaunchOrdinalsOnPage,
|
| + ExtensionPrefsGetMinAndMaxLaunchOrdinalsOnPage) {}
|
|
|