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

Side by Side Diff: chrome/common/extensions/command.cc

Issue 23812010: Implement first part of supporting global extension commands. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: gclient sync Created 7 years, 2 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
« no previous file with comments | « chrome/common/extensions/command.h ('k') | extensions/common/manifest_constants.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/common/extensions/command.h" 5 #include "chrome/common/extensions/command.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/string_split.h" 9 #include "base/strings/string_split.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 if (tokens[i] == values::kKeyCtrl) 243 if (tokens[i] == values::kKeyCtrl)
244 tokens[i] = values::kKeyCommand; 244 tokens[i] = values::kKeyCommand;
245 else if (tokens[i] == values::kKeyMacCtrl) 245 else if (tokens[i] == values::kKeyMacCtrl)
246 tokens[i] = values::kKeyCtrl; 246 tokens[i] = values::kKeyCtrl;
247 } 247 }
248 return JoinString(tokens, '+'); 248 return JoinString(tokens, '+');
249 } 249 }
250 250
251 } // namespace 251 } // namespace
252 252
253 Command::Command() {} 253 Command::Command() : global_(false) {}
254 254
255 Command::Command(const std::string& command_name, 255 Command::Command(const std::string& command_name,
256 const string16& description, 256 const string16& description,
257 const std::string& accelerator) 257 const std::string& accelerator,
258 bool global)
258 : command_name_(command_name), 259 : command_name_(command_name),
259 description_(description) { 260 description_(description),
261 global_(global) {
260 string16 error; 262 string16 error;
261 accelerator_ = ParseImpl(accelerator, CommandPlatform(), 0, 263 accelerator_ = ParseImpl(accelerator, CommandPlatform(), 0,
262 IsNamedCommand(command_name), &error); 264 IsNamedCommand(command_name), &error);
263 } 265 }
264 266
265 Command::~Command() {} 267 Command::~Command() {}
266 268
267 // static 269 // static
268 std::string Command::CommandPlatform() { 270 std::string Command::CommandPlatform() {
269 #if defined(OS_WIN) 271 #if defined(OS_WIN)
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 std::string suggested_key_string; 427 std::string suggested_key_string;
426 if (command->GetString(keys::kSuggestedKey, &suggested_key_string) && 428 if (command->GetString(keys::kSuggestedKey, &suggested_key_string) &&
427 !suggested_key_string.empty()) { 429 !suggested_key_string.empty()) {
428 // If only a single string is provided, it must be default for all. 430 // If only a single string is provided, it must be default for all.
429 suggestions[values::kKeybindingPlatformDefault] = suggested_key_string; 431 suggestions[values::kKeybindingPlatformDefault] = suggested_key_string;
430 } else { 432 } else {
431 suggestions[values::kKeybindingPlatformDefault] = ""; 433 suggestions[values::kKeybindingPlatformDefault] = "";
432 } 434 }
433 } 435 }
434 436
437 // Check if this is a global or a regular shortcut.
438 bool global = false;
439 command->GetBoolean(keys::kGlobal, &global);
440
435 // Normalize the suggestions. 441 // Normalize the suggestions.
436 for (SuggestionMap::iterator iter = suggestions.begin(); 442 for (SuggestionMap::iterator iter = suggestions.begin();
437 iter != suggestions.end(); ++iter) { 443 iter != suggestions.end(); ++iter) {
438 // Before we normalize Ctrl to Command we must detect when the developer 444 // Before we normalize Ctrl to Command we must detect when the developer
439 // specified Command in the Default section, which will work on Mac after 445 // specified Command in the Default section, which will work on Mac after
440 // normalization but only fail on other platforms when they try it out on 446 // normalization but only fail on other platforms when they try it out on
441 // other platforms, which is not what we want. 447 // other platforms, which is not what we want.
442 if (iter->first == values::kKeybindingPlatformDefault && 448 if (iter->first == values::kKeybindingPlatformDefault &&
443 iter->second.find("Command+") != std::string::npos) { 449 iter->second.find("Command+") != std::string::npos) {
444 *error = ErrorUtils::FormatErrorMessageUTF16( 450 *error = ErrorUtils::FormatErrorMessageUTF16(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 } 493 }
488 return false; 494 return false;
489 } 495 }
490 } 496 }
491 497
492 if (iter->first == key) { 498 if (iter->first == key) {
493 // This platform is our platform, so grab this key. 499 // This platform is our platform, so grab this key.
494 accelerator_ = accelerator; 500 accelerator_ = accelerator;
495 command_name_ = command_name; 501 command_name_ = command_name;
496 description_ = description; 502 description_ = description;
503 global_ = global;
497 } 504 }
498 } 505 }
499 return true; 506 return true;
500 } 507 }
501 508
502 base::DictionaryValue* Command::ToValue(const Extension* extension, 509 base::DictionaryValue* Command::ToValue(const Extension* extension,
503 bool active) const { 510 bool active) const {
504 base::DictionaryValue* extension_data = new base::DictionaryValue(); 511 base::DictionaryValue* extension_data = new base::DictionaryValue();
505 512
506 string16 command_description; 513 string16 command_description;
507 if (command_name() == values::kBrowserActionCommandEvent || 514 if (command_name() == values::kBrowserActionCommandEvent ||
508 command_name() == values::kPageActionCommandEvent || 515 command_name() == values::kPageActionCommandEvent ||
509 command_name() == values::kScriptBadgeCommandEvent) { 516 command_name() == values::kScriptBadgeCommandEvent) {
510 command_description = 517 command_description =
511 l10n_util::GetStringUTF16(IDS_EXTENSION_COMMANDS_GENERIC_ACTIVATE); 518 l10n_util::GetStringUTF16(IDS_EXTENSION_COMMANDS_GENERIC_ACTIVATE);
512 } else { 519 } else {
513 command_description = description(); 520 command_description = description();
514 } 521 }
515 extension_data->SetString("description", command_description); 522 extension_data->SetString("description", command_description);
516 extension_data->SetBoolean("active", active); 523 extension_data->SetBoolean("active", active);
517 extension_data->SetString("keybinding", accelerator().GetShortcutText()); 524 extension_data->SetString("keybinding", accelerator().GetShortcutText());
518 extension_data->SetString("command_name", command_name()); 525 extension_data->SetString("command_name", command_name());
519 extension_data->SetString("extension_id", extension->id()); 526 extension_data->SetString("extension_id", extension->id());
520 527
521 return extension_data; 528 return extension_data;
522 } 529 }
523 530
524 } // namespace extensions 531 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/command.h ('k') | extensions/common/manifest_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698