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

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

Issue 1871713002: Convert //chrome/browser/extensions from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and fix header Created 4 years, 8 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
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/browser/extensions/extension_context_menu_model.h" 5 #include "chrome/browser/extensions/extension_context_menu_model.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h"
10 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/app/chrome_command_ids.h" 12 #include "chrome/app/chrome_command_ids.h"
12 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" 13 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h"
13 #include "chrome/browser/extensions/extension_action_runner.h" 14 #include "chrome/browser/extensions/extension_action_runner.h"
14 #include "chrome/browser/extensions/extension_action_test_util.h" 15 #include "chrome/browser/extensions/extension_action_test_util.h"
15 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
16 #include "chrome/browser/extensions/extension_service_test_base.h" 17 #include "chrome/browser/extensions/extension_service_test_base.h"
17 #include "chrome/browser/extensions/menu_manager.h" 18 #include "chrome/browser/extensions/menu_manager.h"
18 #include "chrome/browser/extensions/menu_manager_factory.h" 19 #include "chrome/browser/extensions/menu_manager_factory.h"
19 #include "chrome/browser/extensions/scripting_permissions_modifier.h" 20 #include "chrome/browser/extensions/scripting_permissions_modifier.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 public: 60 public:
60 MenuBuilder(scoped_refptr<const Extension> extension, 61 MenuBuilder(scoped_refptr<const Extension> extension,
61 Browser* browser, 62 Browser* browser,
62 MenuManager* menu_manager) 63 MenuManager* menu_manager)
63 : extension_(extension), 64 : extension_(extension),
64 browser_(browser), 65 browser_(browser),
65 menu_manager_(menu_manager), 66 menu_manager_(menu_manager),
66 cur_id_(0) {} 67 cur_id_(0) {}
67 ~MenuBuilder() {} 68 ~MenuBuilder() {}
68 69
69 scoped_ptr<ExtensionContextMenuModel> BuildMenu() { 70 std::unique_ptr<ExtensionContextMenuModel> BuildMenu() {
70 return make_scoped_ptr(new ExtensionContextMenuModel( 71 return base::WrapUnique(new ExtensionContextMenuModel(
71 extension_.get(), browser_, ExtensionContextMenuModel::VISIBLE, 72 extension_.get(), browser_, ExtensionContextMenuModel::VISIBLE,
72 nullptr)); 73 nullptr));
73 } 74 }
74 75
75 void AddContextItem(MenuItem::Context context) { 76 void AddContextItem(MenuItem::Context context) {
76 MenuItem::Id id(false /* not incognito */, 77 MenuItem::Id id(false /* not incognito */,
77 MenuItem::ExtensionKey(extension_->id())); 78 MenuItem::ExtensionKey(extension_->id()));
78 id.uid = ++cur_id_; 79 id.uid = ++cur_id_;
79 menu_manager_->AddContextItem( 80 menu_manager_->AddContextItem(
80 extension_.get(), 81 extension_.get(),
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 Manifest::Location location); 128 Manifest::Location location);
128 const Extension* AddExtensionWithHostPermission( 129 const Extension* AddExtensionWithHostPermission(
129 const std::string& name, 130 const std::string& name,
130 const char* action_key, 131 const char* action_key,
131 Manifest::Location location, 132 Manifest::Location location,
132 const std::string& host_permission); 133 const std::string& host_permission);
133 134
134 Browser* GetBrowser(); 135 Browser* GetBrowser();
135 136
136 private: 137 private:
137 scoped_ptr<TestBrowserWindow> test_window_; 138 std::unique_ptr<TestBrowserWindow> test_window_;
138 scoped_ptr<Browser> browser_; 139 std::unique_ptr<Browser> browser_;
139 140
140 DISALLOW_COPY_AND_ASSIGN(ExtensionContextMenuModelTest); 141 DISALLOW_COPY_AND_ASSIGN(ExtensionContextMenuModelTest);
141 }; 142 };
142 143
143 ExtensionContextMenuModelTest::ExtensionContextMenuModelTest() {} 144 ExtensionContextMenuModelTest::ExtensionContextMenuModelTest() {}
144 145
145 const Extension* ExtensionContextMenuModelTest::AddExtension( 146 const Extension* ExtensionContextMenuModelTest::AddExtension(
146 const std::string& name, 147 const std::string& name,
147 const char* action_key, 148 const char* action_key,
148 Manifest::Location location) { 149 Manifest::Location location) {
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 221
221 // Don't leave |policy_provider| dangling. 222 // Don't leave |policy_provider| dangling.
222 system->management_policy()->UnregisterProvider(&policy_provider); 223 system->management_policy()->UnregisterProvider(&policy_provider);
223 } 224 }
224 225
225 // Tests the context menu for a component extension. 226 // Tests the context menu for a component extension.
226 TEST_F(ExtensionContextMenuModelTest, ComponentExtensionContextMenu) { 227 TEST_F(ExtensionContextMenuModelTest, ComponentExtensionContextMenu) {
227 InitializeEmptyExtensionService(); 228 InitializeEmptyExtensionService();
228 229
229 std::string name("component"); 230 std::string name("component");
230 scoped_ptr<base::DictionaryValue> manifest = 231 std::unique_ptr<base::DictionaryValue> manifest =
231 DictionaryBuilder() 232 DictionaryBuilder()
232 .Set("name", name) 233 .Set("name", name)
233 .Set("version", "1") 234 .Set("version", "1")
234 .Set("manifest_version", 2) 235 .Set("manifest_version", 2)
235 .Set("browser_action", DictionaryBuilder().Build()) 236 .Set("browser_action", DictionaryBuilder().Build())
236 .Build(); 237 .Build();
237 238
238 { 239 {
239 scoped_refptr<const Extension> extension = 240 scoped_refptr<const Extension> extension =
240 ExtensionBuilder() 241 ExtensionBuilder()
241 .SetManifest(make_scoped_ptr(manifest->DeepCopy())) 242 .SetManifest(base::WrapUnique(manifest->DeepCopy()))
242 .SetID(crx_file::id_util::GenerateId("component")) 243 .SetID(crx_file::id_util::GenerateId("component"))
243 .SetLocation(Manifest::COMPONENT) 244 .SetLocation(Manifest::COMPONENT)
244 .Build(); 245 .Build();
245 service()->AddExtension(extension.get()); 246 service()->AddExtension(extension.get());
246 247
247 ExtensionContextMenuModel menu(extension.get(), GetBrowser(), 248 ExtensionContextMenuModel menu(extension.get(), GetBrowser(),
248 ExtensionContextMenuModel::VISIBLE, nullptr); 249 ExtensionContextMenuModel::VISIBLE, nullptr);
249 250
250 // A component extension's context menu should not include options for 251 // A component extension's context menu should not include options for
251 // managing extensions or removing it, and should only include an option for 252 // managing extensions or removing it, and should only include an option for
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 318
318 // We shouldn't go above the limit of top-level items. 319 // We shouldn't go above the limit of top-level items.
319 EXPECT_EQ(api::context_menus::ACTION_MENU_TOP_LEVEL_LIMIT, 320 EXPECT_EQ(api::context_menus::ACTION_MENU_TOP_LEVEL_LIMIT,
320 CountExtensionItems(*builder.BuildMenu())); 321 CountExtensionItems(*builder.BuildMenu()));
321 } 322 }
322 323
323 // Test that the "show" and "hide" menu items appear correctly in the extension 324 // Test that the "show" and "hide" menu items appear correctly in the extension
324 // context menu without the toolbar redesign. 325 // context menu without the toolbar redesign.
325 TEST_F(ExtensionContextMenuModelTest, ExtensionContextMenuShowAndHideLegacy) { 326 TEST_F(ExtensionContextMenuModelTest, ExtensionContextMenuShowAndHideLegacy) {
326 // Start with the toolbar redesign disabled. 327 // Start with the toolbar redesign disabled.
327 scoped_ptr<FeatureSwitch::ScopedOverride> toolbar_redesign_override( 328 std::unique_ptr<FeatureSwitch::ScopedOverride> toolbar_redesign_override(
328 new FeatureSwitch::ScopedOverride( 329 new FeatureSwitch::ScopedOverride(
329 FeatureSwitch::extension_action_redesign(), false)); 330 FeatureSwitch::extension_action_redesign(), false));
330 331
331 InitializeEmptyExtensionService(); 332 InitializeEmptyExtensionService();
332 Browser* browser = GetBrowser(); 333 Browser* browser = GetBrowser();
333 extension_action_test_util::CreateToolbarModelForProfile(profile()); 334 extension_action_test_util::CreateToolbarModelForProfile(profile());
334 335
335 const Extension* page_action = AddExtension( 336 const Extension* page_action = AddExtension(
336 "page_action_extension", manifest_keys::kPageAction, Manifest::INTERNAL); 337 "page_action_extension", manifest_keys::kPageAction, Manifest::INTERNAL);
337 const Extension* browser_action = 338 const Extension* browser_action =
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 385
385 // Cleanup - make the action visible again. 386 // Cleanup - make the action visible again.
386 action_api->SetBrowserActionVisibility(browser_action->id(), true); 387 action_api->SetBrowserActionVisibility(browser_action->id(), true);
387 } 388 }
388 } 389 }
389 390
390 // Test that the "show" and "hide" menu items appear correctly in the extension 391 // Test that the "show" and "hide" menu items appear correctly in the extension
391 // context menu with the toolbar redesign. 392 // context menu with the toolbar redesign.
392 TEST_F(ExtensionContextMenuModelTest, ExtensionContextMenuShowAndHideRedesign) { 393 TEST_F(ExtensionContextMenuModelTest, ExtensionContextMenuShowAndHideRedesign) {
393 // Start with the toolbar redesign disabled. 394 // Start with the toolbar redesign disabled.
394 scoped_ptr<FeatureSwitch::ScopedOverride> toolbar_redesign_override( 395 std::unique_ptr<FeatureSwitch::ScopedOverride> toolbar_redesign_override(
395 new FeatureSwitch::ScopedOverride( 396 new FeatureSwitch::ScopedOverride(
396 FeatureSwitch::extension_action_redesign(), true)); 397 FeatureSwitch::extension_action_redesign(), true));
397 398
398 InitializeEmptyExtensionService(); 399 InitializeEmptyExtensionService();
399 Browser* browser = GetBrowser(); 400 Browser* browser = GetBrowser();
400 extension_action_test_util::CreateToolbarModelForProfile(profile()); 401 extension_action_test_util::CreateToolbarModelForProfile(profile());
401 const Extension* page_action = 402 const Extension* page_action =
402 AddExtension("page_action_extension", 403 AddExtension("page_action_extension",
403 manifest_keys::kPageAction, 404 manifest_keys::kPageAction,
404 Manifest::INTERNAL); 405 Manifest::INTERNAL);
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
482 ExtensionContextMenuModel::VISIBLE, nullptr); 483 ExtensionContextMenuModel::VISIBLE, nullptr);
483 menu.ExecuteCommand(ExtensionContextMenuModel::UNINSTALL, 0); 484 menu.ExecuteCommand(ExtensionContextMenuModel::UNINSTALL, 0);
484 } 485 }
485 uninstalled_observer.WaitForExtensionUninstalled(); 486 uninstalled_observer.WaitForExtensionUninstalled();
486 EXPECT_FALSE(registry()->GetExtensionById(extension_id, 487 EXPECT_FALSE(registry()->GetExtensionById(extension_id,
487 ExtensionRegistry::EVERYTHING)); 488 ExtensionRegistry::EVERYTHING));
488 } 489 }
489 490
490 TEST_F(ExtensionContextMenuModelTest, TestPageAccessSubmenu) { 491 TEST_F(ExtensionContextMenuModelTest, TestPageAccessSubmenu) {
491 // This test relies on the click-to-script feature. 492 // This test relies on the click-to-script feature.
492 scoped_ptr<FeatureSwitch::ScopedOverride> enable_scripts_require_action( 493 std::unique_ptr<FeatureSwitch::ScopedOverride> enable_scripts_require_action(
493 new FeatureSwitch::ScopedOverride(FeatureSwitch::scripts_require_action(), 494 new FeatureSwitch::ScopedOverride(FeatureSwitch::scripts_require_action(),
494 true)); 495 true));
495 InitializeEmptyExtensionService(); 496 InitializeEmptyExtensionService();
496 497
497 // Add an extension with all urls. 498 // Add an extension with all urls.
498 const Extension* extension = 499 const Extension* extension =
499 AddExtensionWithHostPermission("extension", manifest_keys::kBrowserAction, 500 AddExtensionWithHostPermission("extension", manifest_keys::kBrowserAction,
500 Manifest::INTERNAL, "*://*/*"); 501 Manifest::INTERNAL, "*://*/*");
501 502
502 const GURL kActiveUrl("http://www.example.com/"); 503 const GURL kActiveUrl("http://www.example.com/");
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 "feature_disabled_extension", manifest_keys::kBrowserAction, 651 "feature_disabled_extension", manifest_keys::kBrowserAction,
651 Manifest::INTERNAL, "http://www.google.com/*"); 652 Manifest::INTERNAL, "http://www.google.com/*");
652 ExtensionContextMenuModel feature_disabled_menu( 653 ExtensionContextMenuModel feature_disabled_menu(
653 feature_disabled_extension, GetBrowser(), 654 feature_disabled_extension, GetBrowser(),
654 ExtensionContextMenuModel::VISIBLE, nullptr); 655 ExtensionContextMenuModel::VISIBLE, nullptr);
655 EXPECT_EQ(-1, feature_disabled_menu.GetIndexOfCommandId( 656 EXPECT_EQ(-1, feature_disabled_menu.GetIndexOfCommandId(
656 ExtensionContextMenuModel::PAGE_ACCESS_SUBMENU)); 657 ExtensionContextMenuModel::PAGE_ACCESS_SUBMENU));
657 } 658 }
658 659
659 } // namespace extensions 660 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_context_menu_model.cc ('k') | chrome/browser/extensions/extension_creator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698