Index: chrome/browser/extensions/api/extension_action/browser_action_unittest.cc |
diff --git a/chrome/browser/extensions/api/extension_action/browser_action_unittest.cc b/chrome/browser/extensions/api/extension_action/browser_action_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8060e9ebc6db6fa3ae1a765a8089a5c352cc0a12 |
--- /dev/null |
+++ b/chrome/browser/extensions/api/extension_action/browser_action_unittest.cc |
@@ -0,0 +1,70 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/files/file_util.h" |
+#include "chrome/browser/extensions/extension_service_test_with_install.h" |
+#include "chrome/common/extensions/api/extension_action/action_info.h" |
+ |
+namespace extensions { |
+namespace { |
+ |
+class BrowserActionUnitTest : public ExtensionServiceTestWithInstall { |
+}; |
+ |
+TEST_F(BrowserActionUnitTest, MultiIcons) { |
+ InitializeEmptyExtensionService(); |
+ base::FilePath path = |
+ data_dir().AppendASCII("api_test/browser_action/multi_icons"); |
+ ASSERT_TRUE(base::PathExists(path)); |
+ |
+ const Extension* extension = PackAndInstallCRX(path, INSTALL_NEW); |
+ |
+ EXPECT_EQ(0U, extension->install_warnings().size()); |
+ const ActionInfo* browser_action_info = |
+ ActionInfo::GetBrowserActionInfo(extension); |
+ ASSERT_TRUE(browser_action_info); |
+ |
+ const ExtensionIconSet& icons = browser_action_info->default_icon; |
+ |
+ // Extension can provide arbitrary sizes. |
+ EXPECT_EQ(4u, icons.map().size()); |
+ EXPECT_EQ("icon19.png", icons.Get(19, ExtensionIconSet::MATCH_EXACTLY)); |
+ EXPECT_EQ("icon24.png", icons.Get(24, ExtensionIconSet::MATCH_EXACTLY)); |
+ EXPECT_EQ("icon24.png", icons.Get(31, ExtensionIconSet::MATCH_EXACTLY)); |
Devlin
2015/12/19 01:43:19
This looks a little weird, even though it's correc
Evan Stade
2015/12/19 01:49:58
I could do that but I thought we were going for ul
Devlin
2015/12/19 02:06:11
Unittests are cheap. EXPECT_EQs in a unittest are
|
+ EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY)); |
+} |
+ |
+TEST_F(BrowserActionUnitTest, MissingIconInWebstoreCrx) { |
+ InitializeEmptyExtensionService(); |
+ base::FilePath path = |
+ data_dir().AppendASCII("api_test/browser_action/missing_icon"); |
+ ASSERT_TRUE(base::PathExists(path)); |
+ |
+ const Extension* extension = PackAndInstallCRX(path, INSTALL_NEW); |
+ |
+ ASSERT_EQ(1U, extension->install_warnings().size()); |
+ EXPECT_EQ("Could not load extension icon 'icon19.png'.", |
+ extension->install_warnings().front().message); |
+ const ActionInfo* browser_action_info = |
+ ActionInfo::GetBrowserActionInfo(extension); |
+ ASSERT_TRUE(browser_action_info); |
+ |
+ const ExtensionIconSet& icons = browser_action_info->default_icon; |
+ |
+ EXPECT_EQ(2u, icons.map().size()); |
+ EXPECT_EQ("icon24.png", icons.Get(24, ExtensionIconSet::MATCH_EXACTLY)); |
+ EXPECT_EQ("icon38.png", icons.Get(38, ExtensionIconSet::MATCH_EXACTLY)); |
+} |
+ |
+TEST_F(BrowserActionUnitTest, MissingIconInCommandLine) { |
+ InitializeEmptyExtensionService(); |
+ base::FilePath path = |
+ data_dir().AppendASCII("api_test/browser_action/missing_icon"); |
+ ASSERT_TRUE(base::PathExists(path)); |
+ |
+ PackAndInstallCRXWithLocation(path, Manifest::COMMAND_LINE, INSTALL_FAILED); |
+} |
+ |
+} // namespace |
+} // namespace extensions |