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

Side by Side Diff: chrome/browser/extensions/api/context_menus/context_menus_api.cc

Issue 12253022: Manifest handler for all keys background-related. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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/browser/extensions/api/context_menus/context_menus_api.h" 5 #include "chrome/browser/extensions/api/context_menus/context_menus_api.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/values.h" 11 #include "base/values.h"
12 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
13 #include "chrome/browser/extensions/menu_manager.h" 13 #include "chrome/browser/extensions/menu_manager.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/common/extensions/api/context_menus.h" 15 #include "chrome/common/extensions/api/context_menus.h"
16 #include "chrome/common/extensions/background_info.h"
16 #include "extensions/common/error_utils.h" 17 #include "extensions/common/error_utils.h"
17 #include "extensions/common/url_pattern_set.h" 18 #include "extensions/common/url_pattern_set.h"
18 19
19 using extensions::ErrorUtils; 20 using extensions::ErrorUtils;
20 21
21 namespace { 22 namespace {
22 23
23 const char kGeneratedIdKey[] = "generatedId"; 24 const char kGeneratedIdKey[] = "generatedId";
24 25
25 const char kCannotFindItemError[] = "Cannot find menu item with id *"; 26 const char kCannotFindItemError[] = "Cannot find menu item with id *";
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 namespace Update = api::context_menus::Update; 151 namespace Update = api::context_menus::Update;
151 152
152 bool ContextMenusCreateFunction::RunImpl() { 153 bool ContextMenusCreateFunction::RunImpl() {
153 MenuItem::Id id(profile()->IsOffTheRecord(), extension_id()); 154 MenuItem::Id id(profile()->IsOffTheRecord(), extension_id());
154 scoped_ptr<Create::Params> params(Create::Params::Create(*args_)); 155 scoped_ptr<Create::Params> params(Create::Params::Create(*args_));
155 EXTENSION_FUNCTION_VALIDATE(params.get()); 156 EXTENSION_FUNCTION_VALIDATE(params.get());
156 157
157 if (params->create_properties.id.get()) { 158 if (params->create_properties.id.get()) {
158 id.string_uid = *params->create_properties.id; 159 id.string_uid = *params->create_properties.id;
159 } else { 160 } else {
160 if (GetExtension()->has_lazy_background_page()) { 161 if (BackgroundInfo::HasLazyBackgroundPage(GetExtension())) {
161 error_ = kIdRequiredError; 162 error_ = kIdRequiredError;
162 return false; 163 return false;
163 } 164 }
164 165
165 // The Generated Id is added by context_menus_custom_bindings.js. 166 // The Generated Id is added by context_menus_custom_bindings.js.
166 DictionaryValue* properties = NULL; 167 DictionaryValue* properties = NULL;
167 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &properties)); 168 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &properties));
168 EXTENSION_FUNCTION_VALIDATE(properties->GetInteger(kGeneratedIdKey, 169 EXTENSION_FUNCTION_VALIDATE(properties->GetInteger(kGeneratedIdKey,
169 &id.uid)); 170 &id.uid));
170 } 171 }
171 172
172 std::string title; 173 std::string title;
173 if (params->create_properties.title.get()) 174 if (params->create_properties.title.get())
174 title = *params->create_properties.title; 175 title = *params->create_properties.title;
175 176
176 MenuManager* menu_manager = profile()->GetExtensionService()->menu_manager(); 177 MenuManager* menu_manager = profile()->GetExtensionService()->menu_manager();
177 178
178 if (menu_manager->GetItemById(id)) { 179 if (menu_manager->GetItemById(id)) {
179 error_ = ErrorUtils::FormatErrorMessage(kDuplicateIDError, 180 error_ = ErrorUtils::FormatErrorMessage(kDuplicateIDError,
180 GetIDString(id)); 181 GetIDString(id));
181 return false; 182 return false;
182 } 183 }
183 184
184 if (GetExtension()->has_lazy_background_page() && 185 if (BackgroundInfo::HasLazyBackgroundPage(GetExtension()) &&
185 params->create_properties.onclick.get()) { 186 params->create_properties.onclick.get()) {
186 error_ = kOnclickDisallowedError; 187 error_ = kOnclickDisallowedError;
187 return false; 188 return false;
188 } 189 }
189 190
190 MenuItem::ContextList contexts; 191 MenuItem::ContextList contexts;
191 if (params->create_properties.contexts.get()) 192 if (params->create_properties.contexts.get())
192 contexts = GetContexts(params->create_properties); 193 contexts = GetContexts(params->create_properties);
193 else 194 else
194 contexts.Add(MenuItem::PAGE); 195 contexts.Add(MenuItem::PAGE);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 381
381 bool ContextMenusRemoveAllFunction::RunImpl() { 382 bool ContextMenusRemoveAllFunction::RunImpl() {
382 ExtensionService* service = profile()->GetExtensionService(); 383 ExtensionService* service = profile()->GetExtensionService();
383 MenuManager* manager = service->menu_manager(); 384 MenuManager* manager = service->menu_manager();
384 manager->RemoveAllContextItems(GetExtension()->id()); 385 manager->RemoveAllContextItems(GetExtension()->id());
385 manager->WriteToStorage(GetExtension()); 386 manager->WriteToStorage(GetExtension());
386 return true; 387 return true;
387 } 388 }
388 389
389 } // namespace extensions 390 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698