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

Side by Side Diff: chrome/browser/extensions/script_badge_controller_unittest.cc

Issue 10754004: Remove the refcount from ScriptBadgeController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove injection through ExtensionSystem Created 8 years, 5 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "base/command_line.h"
8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h"
10 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/extensions/extension_tab_helper.h"
12 #include "chrome/browser/extensions/script_badge_controller.h"
13 #include "chrome/browser/extensions/test_extension_system.h"
14 #include "chrome/browser/ui/tab_contents/tab_contents.h"
15 #include "chrome/browser/ui/tab_contents/test_tab_contents.h"
16 #include "chrome/common/chrome_notification_types.h"
17 #include "chrome/common/extensions/extension.h"
18 #include "chrome/common/extensions/extension_builder.h"
19 #include "chrome/common/extensions/value_builder.h"
20 #include "chrome/test/base/testing_profile.h"
21 #include "content/public/browser/browser_thread.h"
22 #include "content/public/browser/navigation_entry.h"
23 #include "content/public/browser/notification_registrar.h"
24 #include "content/public/browser/notification_source.h"
25 #include "content/public/browser/web_contents.h"
26 #include "content/public/test/test_browser_thread.h"
27 #include "testing/gmock/include/gmock/gmock.h"
28
29 using content::BrowserThread;
30
31 namespace extensions {
32 namespace {
33
34 class ScriptBadgeControllerTest : public TabContentsTestHarness {
35 public:
36 ScriptBadgeControllerTest()
37 : ui_thread_(BrowserThread::UI, MessageLoop::current()) {
38 }
39
40 virtual void SetUp() {
41 // Note that this sets a PageActionController into the
42 // extension_tab_helper()->location_bar_controller() field. Do
43 // not use that for testing.
44 TabContentsTestHarness::SetUp();
45
46 TestExtensionSystem* extension_system =
47 static_cast<TestExtensionSystem*>(ExtensionSystem::Get(
48 tab_contents()->profile()));
49
50 // Create an ExtensionService so the ScriptBadgeController can find its
51 // extensions.
52 CommandLine command_line(CommandLine::NO_PROGRAM);
53 extension_service_ = extension_system->CreateExtensionService(
54 &command_line, FilePath(), false);
55
56 script_executor_.reset(new ScriptExecutor(web_contents()));
57 script_badge_controller_.reset(new ScriptBadgeController(
58 tab_contents(), script_executor_.get()));
59 }
60
61 protected:
62 ExtensionService* extension_service_;
63 scoped_ptr<ScriptExecutor> script_executor_;
64 scoped_ptr<ScriptBadgeController> script_badge_controller_;
65
66 private:
67 content::TestBrowserThread ui_thread_;
68 };
69
70 struct CountingNotificationObserver : public content::NotificationObserver {
71 CountingNotificationObserver() : events(0) {}
72
73 virtual void Observe(int type,
74 const content::NotificationSource& source,
75 const content::NotificationDetails& details) OVERRIDE {
76 events++;
77 }
78
79 int events;
80 };
81
82 TEST_F(ScriptBadgeControllerTest, ExecutionMakesBadgeVisible) {
83 content::NotificationRegistrar notification_registrar;
84
85 EXPECT_THAT(script_badge_controller_->GetCurrentActions(),
86 testing::ElementsAre());
87
88 scoped_refptr<const Extension> extension =
89 ExtensionBuilder()
90 .SetManifest(DictionaryBuilder()
91 .Set("name", "Extension with page action")
92 .Set("version", "1.0.0")
93 .Set("manifest_version", 2)
94 .Set("permissions", ListBuilder()
95 .Append("tabs"))
96 .Set("page_action", DictionaryBuilder()
97 .Set("default_title", "Hello")))
98 .Build();
not at google - send to devlin 2012/07/10 01:28:15 so cool
99 extension_service_->AddExtension(extension);
100
101 // Establish a page id.
102 NavigateAndCommit(GURL("http://www.google.com"));
103
104 CountingNotificationObserver location_bar_updated;
105 notification_registrar.Add(
106 &location_bar_updated,
107 chrome::NOTIFICATION_EXTENSION_LOCATION_BAR_UPDATED,
108 content::Source<Profile>(tab_contents()->profile()));
109
110 // Initially, no script badges.
111 EXPECT_THAT(script_badge_controller_->GetCurrentActions(),
112 testing::ElementsAre());
113
114 script_badge_controller_->OnExecuteScriptFinished(
115 extension->id(), true,
116 tab_contents()->web_contents()->GetController().GetActiveEntry()->
117 GetPageID(),
118 "");
119 EXPECT_THAT(script_badge_controller_->GetCurrentActions(),
120 testing::ElementsAre(extension->script_badge()));
121 EXPECT_THAT(location_bar_updated.events, testing::Gt(0));
122 };
123
124 } // namespace
125 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698