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

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

Issue 10533086: Action box menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Action box menu 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/browser/extensions/extension_browsertest.h" 5 #include "chrome/browser/extensions/extension_browsertest.h"
6 #include "chrome/browser/extensions/extension_service.h" 6 #include "chrome/browser/extensions/extension_service.h"
7 #include "chrome/browser/extensions/extension_toolbar_model.h" 7 #include "chrome/browser/extensions/extension_toolbar_model.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 virtual void BrowserActionRemoved(const Extension* extension) { 44 virtual void BrowserActionRemoved(const Extension* extension) {
45 removed_count_++; 45 removed_count_++;
46 } 46 }
47 47
48 virtual void BrowserActionMoved(const Extension* extension, int index) { 48 virtual void BrowserActionMoved(const Extension* extension, int index) {
49 moved_count_++; 49 moved_count_++;
50 } 50 }
51 51
52 const Extension* ExtensionAt(int index) { 52 const Extension* ExtensionAt(int index) {
53 for (extensions::ExtensionList::iterator i = model_->begin(); 53 const extensions::ExtensionList& toolbar_items = model_->toolbar_items();
54 i < model_->end(); ++i) { 54 for (extensions::ExtensionList::const_iterator i = toolbar_items.begin();
55 i < toolbar_items.end(); ++i) {
55 if (index-- == 0) 56 if (index-- == 0)
56 return *i; 57 return *i;
57 } 58 }
58 return NULL; 59 return NULL;
59 } 60 }
60 61
61 protected: 62 protected:
62 ExtensionToolbarModel* model_; 63 ExtensionToolbarModel* model_;
63 64
64 int inserted_count_; 65 int inserted_count_;
65 int removed_count_; 66 int removed_count_;
66 int moved_count_; 67 int moved_count_;
67 }; 68 };
68 69
69 IN_PROC_BROWSER_TEST_F(ExtensionToolbarModelTest, Basic) { 70 IN_PROC_BROWSER_TEST_F(ExtensionToolbarModelTest, Basic) {
70 CommandLine::ForCurrentProcess()->AppendSwitch( 71 CommandLine::ForCurrentProcess()->AppendSwitch(
71 switches::kEnableExperimentalExtensionApis); 72 switches::kEnableExperimentalExtensionApis);
72 73
73 // Load an extension with no browser action. 74 // Load an extension with no browser action.
74 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 75 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
75 .AppendASCII("browser_action") 76 .AppendASCII("browser_action")
76 .AppendASCII("none"))); 77 .AppendASCII("none")));
77 78
78 // This extension should not be in the model (has no browser action). 79 // This extension should not be in the model (has no browser action).
79 EXPECT_EQ(0, inserted_count_); 80 EXPECT_EQ(0, inserted_count_);
80 EXPECT_EQ(0u, model_->size()); 81 EXPECT_EQ(0u, model_->toolbar_items().size());
81 ASSERT_EQ(NULL, ExtensionAt(0)); 82 ASSERT_EQ(NULL, ExtensionAt(0));
82 83
83 // Load an extension with a browser action. 84 // Load an extension with a browser action.
84 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test") 85 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("api_test")
85 .AppendASCII("browser_action") 86 .AppendASCII("browser_action")
86 .AppendASCII("basics"))); 87 .AppendASCII("basics")));
87 88
88 // We should now find our extension in the model. 89 // We should now find our extension in the model.
89 EXPECT_EQ(1, inserted_count_); 90 EXPECT_EQ(1, inserted_count_);
90 EXPECT_EQ(1u, model_->size()); 91 EXPECT_EQ(1u, model_->toolbar_items().size());
91 const Extension* extension = ExtensionAt(0); 92 const Extension* extension = ExtensionAt(0);
92 ASSERT_TRUE(NULL != extension); 93 ASSERT_TRUE(NULL != extension);
93 EXPECT_STREQ("A browser action with no icon that makes the page red", 94 EXPECT_STREQ("A browser action with no icon that makes the page red",
94 extension->name().c_str()); 95 extension->name().c_str());
95 96
96 // Should be a no-op, but still fires the events. 97 // Should be a no-op, but still fires the events.
97 model_->MoveBrowserAction(extension, 0); 98 model_->MoveBrowserAction(extension, 0);
98 EXPECT_EQ(1, moved_count_); 99 EXPECT_EQ(1, moved_count_);
99 EXPECT_EQ(1u, model_->size()); 100 EXPECT_EQ(1u, model_->toolbar_items().size());
100 const Extension* extension2 = ExtensionAt(0); 101 const Extension* extension2 = ExtensionAt(0);
101 EXPECT_EQ(extension, extension2); 102 EXPECT_EQ(extension, extension2);
102 103
103 UnloadExtension(extension->id()); 104 UnloadExtension(extension->id());
104 EXPECT_EQ(1, removed_count_); 105 EXPECT_EQ(1, removed_count_);
105 EXPECT_EQ(0u, model_->size()); 106 EXPECT_EQ(0u, model_->toolbar_items().size());
106 EXPECT_EQ(NULL, ExtensionAt(0)); 107 EXPECT_EQ(NULL, ExtensionAt(0));
107 } 108 }
108 109
109 IN_PROC_BROWSER_TEST_F(ExtensionToolbarModelTest, ReorderAndReinsert) { 110 IN_PROC_BROWSER_TEST_F(ExtensionToolbarModelTest, ReorderAndReinsert) {
110 CommandLine::ForCurrentProcess()->AppendSwitch( 111 CommandLine::ForCurrentProcess()->AppendSwitch(
111 switches::kEnableExperimentalExtensionApis); 112 switches::kEnableExperimentalExtensionApis);
112 113
113 // Load an extension with a browser action. 114 // Load an extension with a browser action.
114 FilePath extension_a_path(test_data_dir_.AppendASCII("api_test") 115 FilePath extension_a_path(test_data_dir_.AppendASCII("api_test")
115 .AppendASCII("browser_action") 116 .AppendASCII("browser_action")
116 .AppendASCII("basics")); 117 .AppendASCII("basics"));
117 ASSERT_TRUE(LoadExtension(extension_a_path)); 118 ASSERT_TRUE(LoadExtension(extension_a_path));
118 119
119 // First extension loaded. 120 // First extension loaded.
120 EXPECT_EQ(1, inserted_count_); 121 EXPECT_EQ(1, inserted_count_);
121 EXPECT_EQ(1u, model_->size()); 122 EXPECT_EQ(1u, model_->toolbar_items().size());
122 const Extension* extensionA = ExtensionAt(0); 123 const Extension* extensionA = ExtensionAt(0);
123 ASSERT_TRUE(NULL != extensionA); 124 ASSERT_TRUE(NULL != extensionA);
124 EXPECT_STREQ("A browser action with no icon that makes the page red", 125 EXPECT_STREQ("A browser action with no icon that makes the page red",
125 extensionA->name().c_str()); 126 extensionA->name().c_str());
126 127
127 // Load another extension with a browser action. 128 // Load another extension with a browser action.
128 FilePath extension_b_path(test_data_dir_.AppendASCII("api_test") 129 FilePath extension_b_path(test_data_dir_.AppendASCII("api_test")
129 .AppendASCII("browser_action") 130 .AppendASCII("browser_action")
130 .AppendASCII("popup")); 131 .AppendASCII("popup"));
131 ASSERT_TRUE(LoadExtension(extension_b_path)); 132 ASSERT_TRUE(LoadExtension(extension_b_path));
132 133
133 // Second extension loaded. 134 // Second extension loaded.
134 EXPECT_EQ(2, inserted_count_); 135 EXPECT_EQ(2, inserted_count_);
135 EXPECT_EQ(2u, model_->size()); 136 EXPECT_EQ(2u, model_->toolbar_items().size());
136 const Extension* extensionB = ExtensionAt(1); 137 const Extension* extensionB = ExtensionAt(1);
137 ASSERT_TRUE(NULL != extensionB); 138 ASSERT_TRUE(NULL != extensionB);
138 EXPECT_STREQ("Popup tester", extensionB->name().c_str()); 139 EXPECT_STREQ("Popup tester", extensionB->name().c_str());
139 140
140 // Load yet another extension with a browser action. 141 // Load yet another extension with a browser action.
141 FilePath extension_c_path(test_data_dir_.AppendASCII("api_test") 142 FilePath extension_c_path(test_data_dir_.AppendASCII("api_test")
142 .AppendASCII("browser_action") 143 .AppendASCII("browser_action")
143 .AppendASCII("remove_popup")); 144 .AppendASCII("remove_popup"));
144 ASSERT_TRUE(LoadExtension(extension_c_path)); 145 ASSERT_TRUE(LoadExtension(extension_c_path));
145 146
146 // Third extension loaded. 147 // Third extension loaded.
147 EXPECT_EQ(3, inserted_count_); 148 EXPECT_EQ(3, inserted_count_);
148 EXPECT_EQ(3u, model_->size()); 149 EXPECT_EQ(3u, model_->toolbar_items().size());
149 const Extension* extensionC = ExtensionAt(2); 150 const Extension* extensionC = ExtensionAt(2);
150 ASSERT_TRUE(NULL != extensionC); 151 ASSERT_TRUE(NULL != extensionC);
151 EXPECT_STREQ("A page action which removes a popup.", 152 EXPECT_STREQ("A page action which removes a popup.",
152 extensionC->name().c_str()); 153 extensionC->name().c_str());
153 154
154 // Order is now A, B, C. Let's put C first. 155 // Order is now A, B, C. Let's put C first.
155 model_->MoveBrowserAction(extensionC, 0); 156 model_->MoveBrowserAction(extensionC, 0);
156 EXPECT_EQ(1, moved_count_); 157 EXPECT_EQ(1, moved_count_);
157 EXPECT_EQ(3u, model_->size()); 158 EXPECT_EQ(3u, model_->toolbar_items().size());
158 EXPECT_EQ(extensionC, ExtensionAt(0)); 159 EXPECT_EQ(extensionC, ExtensionAt(0));
159 EXPECT_EQ(extensionA, ExtensionAt(1)); 160 EXPECT_EQ(extensionA, ExtensionAt(1));
160 EXPECT_EQ(extensionB, ExtensionAt(2)); 161 EXPECT_EQ(extensionB, ExtensionAt(2));
161 EXPECT_EQ(NULL, ExtensionAt(3)); 162 EXPECT_EQ(NULL, ExtensionAt(3));
162 163
163 // Order is now C, A, B. Let's put A last. 164 // Order is now C, A, B. Let's put A last.
164 model_->MoveBrowserAction(extensionA, 2); 165 model_->MoveBrowserAction(extensionA, 2);
165 EXPECT_EQ(2, moved_count_); 166 EXPECT_EQ(2, moved_count_);
166 EXPECT_EQ(3u, model_->size()); 167 EXPECT_EQ(3u, model_->toolbar_items().size());
167 EXPECT_EQ(extensionC, ExtensionAt(0)); 168 EXPECT_EQ(extensionC, ExtensionAt(0));
168 EXPECT_EQ(extensionB, ExtensionAt(1)); 169 EXPECT_EQ(extensionB, ExtensionAt(1));
169 EXPECT_EQ(extensionA, ExtensionAt(2)); 170 EXPECT_EQ(extensionA, ExtensionAt(2));
170 EXPECT_EQ(NULL, ExtensionAt(3)); 171 EXPECT_EQ(NULL, ExtensionAt(3));
171 172
172 // Order is now C, B, A. Let's remove B. 173 // Order is now C, B, A. Let's remove B.
173 std::string idB = extensionB->id(); 174 std::string idB = extensionB->id();
174 UnloadExtension(idB); 175 UnloadExtension(idB);
175 EXPECT_EQ(1, removed_count_); 176 EXPECT_EQ(1, removed_count_);
176 EXPECT_EQ(2u, model_->size()); 177 EXPECT_EQ(2u, model_->toolbar_items().size());
177 EXPECT_EQ(extensionC, ExtensionAt(0)); 178 EXPECT_EQ(extensionC, ExtensionAt(0));
178 EXPECT_EQ(extensionA, ExtensionAt(1)); 179 EXPECT_EQ(extensionA, ExtensionAt(1));
179 EXPECT_EQ(NULL, ExtensionAt(2)); 180 EXPECT_EQ(NULL, ExtensionAt(2));
180 181
181 // Load extension B again. 182 // Load extension B again.
182 ASSERT_TRUE(LoadExtension(extension_b_path)); 183 ASSERT_TRUE(LoadExtension(extension_b_path));
183 184
184 // Extension B loaded again. 185 // Extension B loaded again.
185 EXPECT_EQ(4, inserted_count_); 186 EXPECT_EQ(4, inserted_count_);
186 EXPECT_EQ(3u, model_->size()); 187 EXPECT_EQ(3u, model_->toolbar_items().size());
187 // Make sure it gets its old spot in the list. We should get the same 188 // Make sure it gets its old spot in the list. We should get the same
188 // extension again, otherwise the order has changed. 189 // extension again, otherwise the order has changed.
189 ASSERT_STREQ(idB.c_str(), ExtensionAt(1)->id().c_str()); 190 ASSERT_STREQ(idB.c_str(), ExtensionAt(1)->id().c_str());
190 191
191 // Unload B again. 192 // Unload B again.
192 UnloadExtension(idB); 193 UnloadExtension(idB);
193 EXPECT_EQ(2, removed_count_); 194 EXPECT_EQ(2, removed_count_);
194 EXPECT_EQ(2u, model_->size()); 195 EXPECT_EQ(2u, model_->toolbar_items().size());
195 EXPECT_EQ(extensionC, ExtensionAt(0)); 196 EXPECT_EQ(extensionC, ExtensionAt(0));
196 EXPECT_EQ(extensionA, ExtensionAt(1)); 197 EXPECT_EQ(extensionA, ExtensionAt(1));
197 EXPECT_EQ(NULL, ExtensionAt(2)); 198 EXPECT_EQ(NULL, ExtensionAt(2));
198 199
199 // Order is now C, A. Flip it. 200 // Order is now C, A. Flip it.
200 model_->MoveBrowserAction(extensionA, 0); 201 model_->MoveBrowserAction(extensionA, 0);
201 EXPECT_EQ(3, moved_count_); 202 EXPECT_EQ(3, moved_count_);
202 EXPECT_EQ(2u, model_->size()); 203 EXPECT_EQ(2u, model_->toolbar_items().size());
203 EXPECT_EQ(extensionA, ExtensionAt(0)); 204 EXPECT_EQ(extensionA, ExtensionAt(0));
204 EXPECT_EQ(extensionC, ExtensionAt(1)); 205 EXPECT_EQ(extensionC, ExtensionAt(1));
205 EXPECT_EQ(NULL, ExtensionAt(2)); 206 EXPECT_EQ(NULL, ExtensionAt(2));
206 207
207 // Move A to the location it already occupies. 208 // Move A to the location it already occupies.
208 model_->MoveBrowserAction(extensionA, 0); 209 model_->MoveBrowserAction(extensionA, 0);
209 EXPECT_EQ(4, moved_count_); 210 EXPECT_EQ(4, moved_count_);
210 EXPECT_EQ(2u, model_->size()); 211 EXPECT_EQ(2u, model_->toolbar_items().size());
211 EXPECT_EQ(extensionA, ExtensionAt(0)); 212 EXPECT_EQ(extensionA, ExtensionAt(0));
212 EXPECT_EQ(extensionC, ExtensionAt(1)); 213 EXPECT_EQ(extensionC, ExtensionAt(1));
213 EXPECT_EQ(NULL, ExtensionAt(2)); 214 EXPECT_EQ(NULL, ExtensionAt(2));
214 215
215 // Order is now A, C. Remove C. 216 // Order is now A, C. Remove C.
216 std::string idC = extensionC->id(); 217 std::string idC = extensionC->id();
217 UnloadExtension(idC); 218 UnloadExtension(idC);
218 EXPECT_EQ(3, removed_count_); 219 EXPECT_EQ(3, removed_count_);
219 EXPECT_EQ(1u, model_->size()); 220 EXPECT_EQ(1u, model_->toolbar_items().size());
220 EXPECT_EQ(extensionA, ExtensionAt(0)); 221 EXPECT_EQ(extensionA, ExtensionAt(0));
221 EXPECT_EQ(NULL, ExtensionAt(1)); 222 EXPECT_EQ(NULL, ExtensionAt(1));
222 223
223 // Load extension C again. 224 // Load extension C again.
224 ASSERT_TRUE(LoadExtension(extension_c_path)); 225 ASSERT_TRUE(LoadExtension(extension_c_path));
225 226
226 // Extension C loaded again. 227 // Extension C loaded again.
227 EXPECT_EQ(5, inserted_count_); 228 EXPECT_EQ(5, inserted_count_);
228 EXPECT_EQ(2u, model_->size()); 229 EXPECT_EQ(2u, model_->toolbar_items().size());
229 // Make sure it gets its old spot in the list (at the very end). 230 // Make sure it gets its old spot in the list (at the very end).
230 ASSERT_STREQ(idC.c_str(), ExtensionAt(1)->id().c_str()); 231 ASSERT_STREQ(idC.c_str(), ExtensionAt(1)->id().c_str());
231 } 232 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_toolbar_model.cc ('k') | chrome/browser/ui/cocoa/extensions/browser_actions_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698