OLD | NEW |
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_menu/context_menu_api.h" | 5 #include "chrome/browser/extensions/api/context_menu/context_menu_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/values.h" | |
10 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
11 #include "base/string_util.h" | 10 #include "base/string_util.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/extension_error_utils.h" | 16 #include "extensions/common/error_utils.h" |
17 #include "chrome/common/extensions/url_pattern_set.h" | 17 #include "extensions/common/url_pattern_set.h" |
| 18 |
| 19 using extensions::ErrorUtils; |
18 | 20 |
19 namespace { | 21 namespace { |
20 | 22 |
21 const char kGeneratedIdKey[] = "generatedId"; | 23 const char kGeneratedIdKey[] = "generatedId"; |
22 | 24 |
23 const char kCannotFindItemError[] = "Cannot find menu item with id *"; | 25 const char kCannotFindItemError[] = "Cannot find menu item with id *"; |
24 const char kOnclickDisallowedError[] = "Extensions using event pages cannot " | 26 const char kOnclickDisallowedError[] = "Extensions using event pages cannot " |
25 "pass an onclick parameter to chrome.contextMenus.create. Instead, use " | 27 "pass an onclick parameter to chrome.contextMenus.create. Instead, use " |
26 "the chrome.contextMenus.onClicked event."; | 28 "the chrome.contextMenus.onClicked event."; |
27 const char kCheckedError[] = | 29 const char kCheckedError[] = |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 break; | 123 break; |
122 } | 124 } |
123 return parent_id.Pass(); | 125 return parent_id.Pass(); |
124 } | 126 } |
125 | 127 |
126 extensions::MenuItem* GetParent(extensions::MenuItem::Id parent_id, | 128 extensions::MenuItem* GetParent(extensions::MenuItem::Id parent_id, |
127 const extensions::MenuManager* menu_manager, | 129 const extensions::MenuManager* menu_manager, |
128 std::string* error) { | 130 std::string* error) { |
129 extensions::MenuItem* parent = menu_manager->GetItemById(parent_id); | 131 extensions::MenuItem* parent = menu_manager->GetItemById(parent_id); |
130 if (!parent) { | 132 if (!parent) { |
131 *error = ExtensionErrorUtils::FormatErrorMessage( | 133 *error = ErrorUtils::FormatErrorMessage( |
132 kCannotFindItemError, GetIDString(parent_id)); | 134 kCannotFindItemError, GetIDString(parent_id)); |
133 return NULL; | 135 return NULL; |
134 } | 136 } |
135 if (parent->type() != extensions::MenuItem::NORMAL) { | 137 if (parent->type() != extensions::MenuItem::NORMAL) { |
136 *error = kParentsMustBeNormalError; | 138 *error = kParentsMustBeNormalError; |
137 return NULL; | 139 return NULL; |
138 } | 140 } |
139 | 141 |
140 return parent; | 142 return parent; |
141 } | 143 } |
(...skipping 26 matching lines...) Expand all Loading... |
168 &id.uid)); | 170 &id.uid)); |
169 } | 171 } |
170 | 172 |
171 std::string title; | 173 std::string title; |
172 if (params->create_properties.title.get()) | 174 if (params->create_properties.title.get()) |
173 title = *params->create_properties.title; | 175 title = *params->create_properties.title; |
174 | 176 |
175 MenuManager* menu_manager = profile()->GetExtensionService()->menu_manager(); | 177 MenuManager* menu_manager = profile()->GetExtensionService()->menu_manager(); |
176 | 178 |
177 if (menu_manager->GetItemById(id)) { | 179 if (menu_manager->GetItemById(id)) { |
178 error_ = ExtensionErrorUtils::FormatErrorMessage(kDuplicateIDError, | 180 error_ = ErrorUtils::FormatErrorMessage(kDuplicateIDError, |
179 GetIDString(id)); | 181 GetIDString(id)); |
180 return false; | 182 return false; |
181 } | 183 } |
182 | 184 |
183 if (GetExtension()->has_lazy_background_page() && | 185 if (GetExtension()->has_lazy_background_page() && |
184 params->create_properties.onclick.get()) { | 186 params->create_properties.onclick.get()) { |
185 error_ = kOnclickDisallowedError; | 187 error_ = kOnclickDisallowedError; |
186 return false; | 188 return false; |
187 } | 189 } |
188 | 190 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 item_id.uid = *params->id_integer; | 259 item_id.uid = *params->id_integer; |
258 break; | 260 break; |
259 case Update::Params::ID_NONE: | 261 case Update::Params::ID_NONE: |
260 NOTREACHED(); | 262 NOTREACHED(); |
261 } | 263 } |
262 | 264 |
263 ExtensionService* service = profile()->GetExtensionService(); | 265 ExtensionService* service = profile()->GetExtensionService(); |
264 MenuManager* manager = service->menu_manager(); | 266 MenuManager* manager = service->menu_manager(); |
265 MenuItem* item = manager->GetItemById(item_id); | 267 MenuItem* item = manager->GetItemById(item_id); |
266 if (!item || item->extension_id() != extension_id()) { | 268 if (!item || item->extension_id() != extension_id()) { |
267 error_ = ExtensionErrorUtils::FormatErrorMessage( | 269 error_ = ErrorUtils::FormatErrorMessage( |
268 kCannotFindItemError, GetIDString(item_id)); | 270 kCannotFindItemError, GetIDString(item_id)); |
269 return false; | 271 return false; |
270 } | 272 } |
271 | 273 |
272 // Type. | 274 // Type. |
273 MenuItem::Type type = GetType(params->update_properties); | 275 MenuItem::Type type = GetType(params->update_properties); |
274 | 276 |
275 if (type != item->type()) { | 277 if (type != item->type()) { |
276 if (type == MenuItem::RADIO || item->type() == MenuItem::RADIO) | 278 if (type == MenuItem::RADIO || item->type() == MenuItem::RADIO) |
277 radio_item_updated = true; | 279 radio_item_updated = true; |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 case Remove::Params::MENU_ITEM_ID_INTEGER: | 369 case Remove::Params::MENU_ITEM_ID_INTEGER: |
368 id.uid = *params->menu_item_id_integer; | 370 id.uid = *params->menu_item_id_integer; |
369 break; | 371 break; |
370 case Remove::Params::MENU_ITEM_ID_NONE: | 372 case Remove::Params::MENU_ITEM_ID_NONE: |
371 NOTREACHED(); | 373 NOTREACHED(); |
372 } | 374 } |
373 | 375 |
374 MenuItem* item = manager->GetItemById(id); | 376 MenuItem* item = manager->GetItemById(id); |
375 // Ensure one extension can't remove another's menu items. | 377 // Ensure one extension can't remove another's menu items. |
376 if (!item || item->extension_id() != extension_id()) { | 378 if (!item || item->extension_id() != extension_id()) { |
377 error_ = ExtensionErrorUtils::FormatErrorMessage( | 379 error_ = ErrorUtils::FormatErrorMessage( |
378 kCannotFindItemError, GetIDString(id)); | 380 kCannotFindItemError, GetIDString(id)); |
379 return false; | 381 return false; |
380 } | 382 } |
381 | 383 |
382 if (!manager->RemoveContextMenuItem(id)) | 384 if (!manager->RemoveContextMenuItem(id)) |
383 return false; | 385 return false; |
384 manager->WriteToStorage(GetExtension()); | 386 manager->WriteToStorage(GetExtension()); |
385 return true; | 387 return true; |
386 } | 388 } |
387 | 389 |
388 bool RemoveAllContextMenusFunction::RunImpl() { | 390 bool RemoveAllContextMenusFunction::RunImpl() { |
389 ExtensionService* service = profile()->GetExtensionService(); | 391 ExtensionService* service = profile()->GetExtensionService(); |
390 MenuManager* manager = service->menu_manager(); | 392 MenuManager* manager = service->menu_manager(); |
391 manager->RemoveAllContextItems(GetExtension()->id()); | 393 manager->RemoveAllContextItems(GetExtension()->id()); |
392 manager->WriteToStorage(GetExtension()); | 394 manager->WriteToStorage(GetExtension()); |
393 return true; | 395 return true; |
394 } | 396 } |
395 | 397 |
396 } // namespace extensions | 398 } // namespace extensions |
OLD | NEW |