Chromium Code Reviews| Index: chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab_unittest.cc |
| diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab_unittest.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab_unittest.cc |
| index 495da923315c6de333dfcbd6d696db45c96f0544..c0a32ab0b33a2328954490b94fa56f1e33216cab 100644 |
| --- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab_unittest.cc |
| +++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab_unittest.cc |
| @@ -21,31 +21,49 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +namespace { |
| + |
| +const char kTestExtensionId[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
| + |
| +} // namespace |
| + |
| using base::FilePath; |
| using testing::Contains; |
| using testing::Eq; |
| class AppInfoPermissionsTabTest : public testing::Test { |
| protected: |
| - AppInfoPermissionsTabTest() : window(NULL) {}; |
| + AppInfoPermissionsTabTest() : window_(NULL) {}; |
| + |
| + scoped_ptr<base::DictionaryValue> ValidAppManifest() { |
| + return extensions::DictionaryBuilder() |
| + .Set("name", "Test App Name") |
| + .Set("version", "2.0") |
| + .Set("manifest_version", 2) |
| + .Set("app", |
| + extensions::DictionaryBuilder().Set( |
| + "background", |
| + extensions::DictionaryBuilder().Set( |
| + "scripts", |
| + extensions::ListBuilder().Append("background.js")))) |
| + .Build(); |
| + } |
| - gfx::NativeWindow window; |
| - TestingProfile profile; |
| + gfx::NativeWindow window_; |
| + TestingProfile profile_; |
| // We need the UI thread in order to construct UI elements in the view. |
| - content::TestBrowserThreadBundle thread_bundle; |
| + content::TestBrowserThreadBundle thread_bundle_; |
| }; |
| // Tests that an app with no permissions is treated correctly. |
| TEST_F(AppInfoPermissionsTabTest, NoPermissionsObtainedCorrectly) { |
| scoped_refptr<const extensions::Extension> app = |
| extensions::ExtensionBuilder() |
| - .SetManifest( |
| - extensions::DictionaryBuilder().Set("name", "Test App Name").Set( |
| - "version", "2.0")) |
| - .SetID("cedabbhfglmiikkmdgcpjdkocfcmbkee") |
| + .SetManifest(ValidAppManifest()) |
| + .SetID(kTestExtensionId) |
| .Build(); |
| - AppInfoPermissionsTab tab(window, &profile, app, base::Closure()); |
| + AppInfoPermissionsTab tab(window_, &profile_, app, base::Closure()); |
| EXPECT_TRUE(tab.GetRequiredPermissions()->IsEmpty()); |
| EXPECT_TRUE(tab.GetRequiredPermissionMessages().empty()); |
| @@ -62,40 +80,36 @@ TEST_F(AppInfoPermissionsTabTest, NoPermissionsObtainedCorrectly) { |
| TEST_F(AppInfoPermissionsTabTest, RequiredPermissionsObtainedCorrectly) { |
| scoped_refptr<const extensions::Extension> app = |
| extensions::ExtensionBuilder() |
| - .SetManifest( |
| - extensions::DictionaryBuilder() |
| - .Set("name", "Test App Name") |
| - .Set("version", "2.0") |
| - .Set("permissions", |
| - extensions::ListBuilder() |
| - .Append("location") // A valid permission with a |
| - // message |
| - .Append("bad_perm") // An invalid permission |
| - .Append("browsingData") // An valid permission with |
| - // no message |
| - .Append("tabs"))) // Another valid permission with |
| - // a message |
| - .SetID("cedabbhfglmiikkmdgcpjdkocfcmbkee") |
| + .SetManifest(ValidAppManifest()) |
| + .MergeManifest(extensions::DictionaryBuilder().Set( |
| + "permissions", |
| + extensions::ListBuilder() |
| + .Append("location") // A valid permission with a |
| + // message |
| + .Append("bad_perm") // An invalid permission |
| + .Append("notifications") // An valid permission with |
|
Lei Zhang
2014/05/02 18:57:55
you've changed the permissions here and below in t
|
| + // no message |
| + .Append("serial"))) // Another valid permission with |
| + // a message |
| + .SetID(kTestExtensionId) |
| .Build(); |
| - AppInfoPermissionsTab tab(window, &profile, app, base::Closure()); |
| + AppInfoPermissionsTab tab(window_, &profile_, app, base::Closure()); |
| const extensions::PermissionSet* required_permissions = |
| tab.GetRequiredPermissions(); |
| EXPECT_FALSE(required_permissions->IsEmpty()); |
| - EXPECT_EQ((size_t)3, required_permissions->GetAPIsAsStrings().size()); |
| + EXPECT_EQ(3U, required_permissions->GetAPIsAsStrings().size()); |
| EXPECT_TRUE(tab.GetOptionalPermissions()->IsEmpty()); |
| EXPECT_TRUE(tab.GetRetainedFilePermissions().empty()); |
| const std::vector<base::string16> required_permission_messages = |
| tab.GetRequiredPermissionMessages(); |
| - EXPECT_EQ((size_t)2, required_permission_messages.size()); |
| - ASSERT_STREQ(l10n_util::GetStringUTF8( |
| - IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION).c_str(), |
| - base::UTF16ToUTF8(required_permission_messages[0]).c_str()); |
| - ASSERT_STREQ( |
| - l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_TABS).c_str(), |
| - base::UTF16ToUTF8(required_permission_messages[1]).c_str()); |
| + ASSERT_EQ(2U, required_permission_messages.size()); |
| + EXPECT_EQ(l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION), |
| + base::UTF16ToUTF8(required_permission_messages[0])); |
| + EXPECT_EQ(l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_SERIAL), |
| + base::UTF16ToUTF8(required_permission_messages[1])); |
| } |
| // Tests that an app's optional permissions are detected and converted to |
| @@ -103,40 +117,36 @@ TEST_F(AppInfoPermissionsTabTest, RequiredPermissionsObtainedCorrectly) { |
| TEST_F(AppInfoPermissionsTabTest, OptionalPermissionsObtainedCorrectly) { |
| scoped_refptr<const extensions::Extension> app = |
| extensions::ExtensionBuilder() |
| - .SetManifest( |
| - extensions::DictionaryBuilder() |
| - .Set("name", "Test App Name") |
| - .Set("version", "2.0") |
| - .Set("optional_permissions", |
| - extensions::ListBuilder() |
| - .Append("bookmarks") // A valid permission with a |
| - // message |
| - .Append("bad_perm") // An invalid permission |
| - .Append("cookies") // A valid permission with |
| - // no message |
| - .Append("tabs"))) // Another valid permission with |
| - // a message |
| - .SetID("cedabbhfglmiikkmdgcpjdkocfcmbkee") |
| + .SetManifest(ValidAppManifest()) |
| + .MergeManifest(extensions::DictionaryBuilder().Set( |
| + "optional_permissions", |
| + extensions::ListBuilder() |
| + .Append("clipboardRead") // A valid permission with a |
| + // message |
| + .Append("bad_perm") // An invalid permission |
| + .Append("idle") // A valid permission with |
| + // no message |
| + .Append("serial"))) // Another valid permission with |
| + // a message |
| + .SetID(kTestExtensionId) |
| .Build(); |
| - AppInfoPermissionsTab tab(window, &profile, app, base::Closure()); |
| + AppInfoPermissionsTab tab(window_, &profile_, app, base::Closure()); |
| const extensions::PermissionSet* optional_permissions = |
| tab.GetOptionalPermissions(); |
| EXPECT_FALSE(optional_permissions->IsEmpty()); |
| - EXPECT_EQ((size_t)3, optional_permissions->GetAPIsAsStrings().size()); |
| + EXPECT_EQ(3U, optional_permissions->GetAPIsAsStrings().size()); |
| EXPECT_TRUE(tab.GetRequiredPermissions()->IsEmpty()); |
| EXPECT_TRUE(tab.GetRetainedFilePermissions().empty()); |
| const std::vector<base::string16> optional_permission_messages = |
| tab.GetOptionalPermissionMessages(); |
| - EXPECT_EQ((size_t)2, optional_permission_messages.size()); |
| - ASSERT_STREQ( |
| - l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS).c_str(), |
| - base::UTF16ToUTF8(optional_permission_messages[0]).c_str()); |
| - ASSERT_STREQ( |
| - l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_TABS).c_str(), |
| - base::UTF16ToUTF8(optional_permission_messages[1]).c_str()); |
| + ASSERT_EQ(2U, optional_permission_messages.size()); |
| + EXPECT_EQ(l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD), |
| + base::UTF16ToUTF8(optional_permission_messages[0])); |
| + EXPECT_EQ(l10n_util::GetStringUTF8(IDS_EXTENSION_PROMPT_WARNING_SERIAL), |
| + base::UTF16ToUTF8(optional_permission_messages[1])); |
| } |
| // Tests that an app's retained files are detected and converted to paths |
| @@ -144,29 +154,19 @@ TEST_F(AppInfoPermissionsTabTest, OptionalPermissionsObtainedCorrectly) { |
| TEST_F(AppInfoPermissionsTabTest, RetainedFilePermissionsObtainedCorrectly) { |
| scoped_refptr<const extensions::Extension> app = |
| extensions::ExtensionBuilder() |
| - .SetManifest(extensions::DictionaryBuilder() |
| - .Set("name", "Test App Name") |
| - .Set("version", "2.0") |
| - .Set("manifest_version", 2) |
| - .Set("app", |
| - extensions::DictionaryBuilder().Set( |
| - "background", |
| - extensions::DictionaryBuilder().Set( |
| - "scripts", |
| - extensions::ListBuilder().Append( |
| - "background.js")))) |
| - .Set("permissions", |
| - extensions::ListBuilder().Append( |
| - extensions::DictionaryBuilder().Set( |
| - "fileSystem", |
| - extensions::ListBuilder().Append( |
| - "retainEntries"))))) |
| - .SetID("cedabbhfglmiikkmdgcpjdkocfcmbkee") |
| + .SetManifest(ValidAppManifest()) |
| + .MergeManifest(extensions::DictionaryBuilder().Set( |
| + "permissions", |
| + extensions::ListBuilder().Append( |
| + extensions::DictionaryBuilder().Set( |
| + "fileSystem", |
| + extensions::ListBuilder().Append("retainEntries"))))) |
| + .SetID(kTestExtensionId) |
| .Build(); |
| - AppInfoPermissionsTab tab(window, &profile, app, base::Closure()); |
| + AppInfoPermissionsTab tab(window_, &profile_, app, base::Closure()); |
| apps::SavedFilesService* files_service = |
| - apps::SavedFilesService::Get(&profile); |
| + apps::SavedFilesService::Get(&profile_); |
| files_service->RegisterFileEntry( |
| app->id(), "file_id_1", FilePath(FILE_PATH_LITERAL("file_1.ext")), false); |
| files_service->RegisterFileEntry( |
| @@ -179,7 +179,7 @@ TEST_F(AppInfoPermissionsTabTest, RetainedFilePermissionsObtainedCorrectly) { |
| const extensions::PermissionSet* required_permissions = |
| tab.GetRequiredPermissions(); |
| EXPECT_FALSE(required_permissions->IsEmpty()); |
| - EXPECT_EQ((size_t)2, required_permissions->GetAPIsAsStrings().size()); |
| + EXPECT_EQ(2U, required_permissions->GetAPIsAsStrings().size()); |
| EXPECT_TRUE(tab.GetOptionalPermissions()->IsEmpty()); |
| @@ -187,15 +187,12 @@ TEST_F(AppInfoPermissionsTabTest, RetainedFilePermissionsObtainedCorrectly) { |
| // using Contains. |
| const std::vector<FilePath> retained_files = tab.GetRetainedFilePermissions(); |
| std::vector<FilePath::StringType> retained_file_paths; |
| - for (std::vector<FilePath>::const_iterator it = retained_files.begin(); |
| - it != retained_files.end(); |
| - it++) { |
| - retained_file_paths.push_back(it->value()); |
| - } |
| + for (size_t i = 0; i < retained_files.size(); ++i) |
| + retained_file_paths.push_back(retained_files[i].value()); |
| // Since we have no guarantees on the order of retained files, make sure the |
| // list is the expected length and all required entries are present. |
| - EXPECT_EQ((size_t)3, retained_files.size()); |
| + ASSERT_EQ(3U, retained_files.size()); |
| EXPECT_THAT( |
| retained_file_paths, |
| Contains(Eq(FilePath::StringType(FILE_PATH_LITERAL("file_1.ext"))))); |
| @@ -208,11 +205,11 @@ TEST_F(AppInfoPermissionsTabTest, RetainedFilePermissionsObtainedCorrectly) { |
| const std::vector<base::string16> retained_file_messages = |
| tab.GetRetainedFilePermissionMessages(); |
| - EXPECT_EQ((size_t)3, retained_file_messages.size()); |
| - ASSERT_STREQ("file_1.ext", |
| + ASSERT_EQ(3U, retained_file_messages.size()); |
| + EXPECT_STREQ("file_1.ext", |
| base::UTF16ToUTF8(retained_file_messages[0]).c_str()); |
| - ASSERT_STREQ("file_2.ext", |
| + EXPECT_STREQ("file_2.ext", |
| base::UTF16ToUTF8(retained_file_messages[1]).c_str()); |
| - ASSERT_STREQ("file_3.ext", |
| + EXPECT_STREQ("file_3.ext", |
| base::UTF16ToUTF8(retained_file_messages[2]).c_str()); |
| } |