Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(542)

Side by Side Diff: chrome/common/extensions/manifest_tests/extension_manifests_scriptbadge_unittest.cc

Issue 10806058: Move icon fallbacks into ExtensionAction. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Windows support Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/common/extensions/manifest_tests/extension_manifest_test.h" 5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
6 6
7 #include "chrome/common/extensions/extension_action.h" 7 #include "chrome/common/extensions/extension_action.h"
8 #include "chrome/common/extensions/extension_manifest_constants.h" 8 #include "chrome/common/extensions/extension_manifest_constants.h"
9 #include "chrome/common/extensions/extension_switch_utils.h" 9 #include "chrome/common/extensions/extension_switch_utils.h"
10 #include "grit/theme_resources.h"
11 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
11 #include "testing/gmock/include/gmock/gmock.h" 13 #include "ui/base/resource/resource_bundle.h"
12 #include "third_party/skia/include/core/SkBitmap.h" 14 #include "ui/gfx/image/image.h"
15 #include "ui/gfx/skia_util.h"
13 16
14 namespace errors = extension_manifest_errors; 17 namespace errors = extension_manifest_errors;
15 namespace switch_utils = extensions::switch_utils; 18 namespace switch_utils = extensions::switch_utils;
16 using extensions::Extension; 19 using extensions::Extension;
17 20
21 static bool ImagesAreEqual(const gfx::Image& i1, const gfx::Image& i2) {
not at google - send to devlin 2012/07/26 02:29:44 ditto
Jeffrey Yasskin 2012/07/26 21:11:47 Done.
22 return gfx::BitmapsAreEqual(*i1.ToSkBitmap(), *i2.ToSkBitmap());
23 }
24
18 std::vector<Extension::InstallWarning> StripMissingFlagWarning( 25 std::vector<Extension::InstallWarning> StripMissingFlagWarning(
19 const std::vector<Extension::InstallWarning>& install_warnings) { 26 const std::vector<Extension::InstallWarning>& install_warnings) {
20 std::vector<Extension::InstallWarning> result; 27 std::vector<Extension::InstallWarning> result;
21 for (size_t i = 0; i < install_warnings.size(); ++i) { 28 for (size_t i = 0; i < install_warnings.size(); ++i) {
22 if (install_warnings[i].message != errors::kScriptBadgeRequiresFlag) 29 if (install_warnings[i].message != errors::kScriptBadgeRequiresFlag)
23 result.push_back(install_warnings[i]); 30 result.push_back(install_warnings[i]);
24 } 31 }
25 return result; 32 return result;
26 } 33 }
27 34
28 TEST_F(ExtensionManifestTest, ScriptBadgeBasic) { 35 TEST_F(ExtensionManifestTest, ScriptBadgeBasic) {
29 scoped_refptr<Extension> extension( 36 scoped_refptr<Extension> extension(
30 LoadAndExpectSuccess("script_badge_basic.json")); 37 LoadAndExpectSuccess("script_badge_basic.json"));
31 ASSERT_TRUE(extension.get()); 38 ASSERT_TRUE(extension.get());
32 ASSERT_TRUE(extension->script_badge()); 39 ASSERT_TRUE(extension->script_badge());
33 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()), 40 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()),
34 testing::ElementsAre(/*empty*/)); 41 testing::ElementsAre(/*empty*/));
35 42
36 EXPECT_EQ("my extension", extension->script_badge()->GetTitle( 43 EXPECT_EQ("my extension", extension->script_badge()->GetTitle(
37 ExtensionAction::kDefaultTabId)); 44 ExtensionAction::kDefaultTabId));
38 EXPECT_TRUE(extension->script_badge()->HasPopup( 45 EXPECT_TRUE(extension->script_badge()->HasPopup(
39 ExtensionAction::kDefaultTabId)); 46 ExtensionAction::kDefaultTabId));
40 EXPECT_TRUE(extension->script_badge()->GetIcon( 47 ExtensionAction::PathToIconCache empty_cache;
41 ExtensionAction::kDefaultTabId).isNull()); 48 EXPECT_TRUE(ImagesAreEqual(
49 ui::ResourceBundle::GetSharedInstance().GetImageNamed(
50 IDR_EXTENSIONS_FAVICON),
51 extension->script_badge()->GetIcon(
52 ExtensionAction::kDefaultTabId, empty_cache)));
42 EXPECT_EQ("icon16.png", extension->script_badge()->default_icon_path()); 53 EXPECT_EQ("icon16.png", extension->script_badge()->default_icon_path());
43 } 54 }
44 55
45 TEST_F(ExtensionManifestTest, ScriptBadgeExplicitTitleAndIconsIgnored) { 56 TEST_F(ExtensionManifestTest, ScriptBadgeExplicitTitleAndIconsIgnored) {
46 scoped_refptr<Extension> extension( 57 scoped_refptr<Extension> extension(
47 LoadAndExpectSuccess("script_badge_title_icons_ignored.json")); 58 LoadAndExpectSuccess("script_badge_title_icons_ignored.json"));
48 ASSERT_TRUE(extension.get()); 59 ASSERT_TRUE(extension.get());
49 ASSERT_TRUE(extension->script_badge()); 60 ASSERT_TRUE(extension->script_badge());
50 61
51 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()), 62 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()),
52 testing::ElementsAre( 63 testing::ElementsAre(
53 Extension::InstallWarning( 64 Extension::InstallWarning(
54 Extension::InstallWarning::FORMAT_TEXT, 65 Extension::InstallWarning::FORMAT_TEXT,
55 errors::kScriptBadgeTitleIgnored), 66 errors::kScriptBadgeTitleIgnored),
56 Extension::InstallWarning( 67 Extension::InstallWarning(
57 Extension::InstallWarning::FORMAT_TEXT, 68 Extension::InstallWarning::FORMAT_TEXT,
58 errors::kScriptBadgeIconIgnored))); 69 errors::kScriptBadgeIconIgnored)));
59 EXPECT_EQ("my extension", extension->script_badge()->GetTitle( 70 EXPECT_EQ("my extension", extension->script_badge()->GetTitle(
60 ExtensionAction::kDefaultTabId)); 71 ExtensionAction::kDefaultTabId));
61 EXPECT_TRUE(extension->script_badge()->GetIcon( 72 ExtensionAction::PathToIconCache empty_cache;
62 ExtensionAction::kDefaultTabId).isNull()); 73 EXPECT_TRUE(ImagesAreEqual(
74 ui::ResourceBundle::GetSharedInstance().GetImageNamed(
75 IDR_EXTENSIONS_FAVICON),
76 extension->script_badge()->GetIcon(
77 ExtensionAction::kDefaultTabId, empty_cache)));
63 EXPECT_EQ("icon16.png", extension->script_badge()->default_icon_path()); 78 EXPECT_EQ("icon16.png", extension->script_badge()->default_icon_path());
64 } 79 }
65 80
66 TEST_F(ExtensionManifestTest, ScriptBadgeIconFallsBackToPuzzlePiece) { 81 TEST_F(ExtensionManifestTest, ScriptBadgeIconFallsBackToPuzzlePiece) {
67 scoped_refptr<Extension> extension( 82 scoped_refptr<Extension> extension(
68 LoadAndExpectSuccess("script_badge_only_use_icon16.json")); 83 LoadAndExpectSuccess("script_badge_only_use_icon16.json"));
69 ASSERT_TRUE(extension.get()); 84 ASSERT_TRUE(extension.get());
70 ASSERT_TRUE(extension->script_badge()); 85 ASSERT_TRUE(extension->script_badge());
71 EXPECT_THAT(extension->install_warnings(), 86 EXPECT_THAT(extension->install_warnings(),
72 testing::ElementsAre(/*empty*/)); 87 testing::ElementsAre(/*empty*/));
73 88
74 EXPECT_EQ("", extension->script_badge()->default_icon_path()) 89 EXPECT_EQ("", extension->script_badge()->default_icon_path())
75 << "Should not fall back to the 64px icon."; 90 << "Should not fall back to the 64px icon.";
91 ExtensionAction::PathToIconCache empty_cache;
76 EXPECT_FALSE(extension->script_badge()->GetIcon( 92 EXPECT_FALSE(extension->script_badge()->GetIcon(
77 ExtensionAction::kDefaultTabId).isNull()) 93 ExtensionAction::kDefaultTabId, empty_cache).IsEmpty())
78 << "Should set the puzzle piece as the default, but there's no way " 94 << "Should set the puzzle piece as the default, but there's no way "
79 << "to assert in a unittest what the image looks like."; 95 << "to assert in a unittest what the image looks like.";
80 } 96 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698