diff options
Diffstat (limited to 'chrome/browser/extensions/extension_browser_actions_api.cc')
-rw-r--r-- | chrome/browser/extensions/extension_browser_actions_api.cc | 60 |
1 files changed, 35 insertions, 25 deletions
diff --git a/chrome/browser/extensions/extension_browser_actions_api.cc b/chrome/browser/extensions/extension_browser_actions_api.cc index e671d15..d2cb604 100644 --- a/chrome/browser/extensions/extension_browser_actions_api.cc +++ b/chrome/browser/extensions/extension_browser_actions_api.cc @@ -17,30 +17,11 @@ const char kIconIndexOutOfBounds[] = "Browser action icon index out of bounds."; } -bool BrowserActionSetNameFunction::RunImpl() { - std::string title; - EXTENSION_FUNCTION_VALIDATE(args_->GetAsString(&title)); - - Extension* extension = dispatcher()->GetExtension(); - if (!extension->browser_action()) { - error_ = kNoBrowserActionError; - return false; - } - - extension->browser_action_state()->set_title(title); - - NotificationService::current()->Notify( - NotificationType::EXTENSION_BROWSER_ACTION_UPDATED, - Source<ExtensionAction>(extension->browser_action()), - Details<ExtensionActionState>(extension->browser_action_state())); - return true; -} - bool BrowserActionSetIconFunction::RunImpl() { // setIcon can take a variant argument: either a canvas ImageData, or an // icon index. EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_BINARY) || - args_->IsType(Value::TYPE_INTEGER)); + args_->IsType(Value::TYPE_DICTIONARY)); Extension* extension = dispatcher()->GetExtension(); if (!extension->browser_action()) { @@ -58,8 +39,9 @@ bool BrowserActionSetIconFunction::RunImpl() { extension->browser_action_state()->set_icon(bitmap.release()); } else { int icon_index = -1; - EXTENSION_FUNCTION_VALIDATE(args_->GetAsInteger(&icon_index)); - + EXTENSION_FUNCTION_VALIDATE( + static_cast<DictionaryValue*>(args_)->GetInteger( + L"iconIndex", &icon_index)); if (icon_index < 0 || static_cast<size_t>(icon_index) >= extension->browser_action()->icon_paths().size()) { @@ -77,9 +59,34 @@ bool BrowserActionSetIconFunction::RunImpl() { return true; } +bool BrowserActionSetTitleFunction::RunImpl() { + EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_DICTIONARY)); + DictionaryValue* details = static_cast<DictionaryValue*>(args_); + + std::string title; + EXTENSION_FUNCTION_VALIDATE(details->GetString(L"title", &title)); + + Extension* extension = dispatcher()->GetExtension(); + if (!extension->browser_action()) { + error_ = kNoBrowserActionError; + return false; + } + + extension->browser_action_state()->set_title(title); + + NotificationService::current()->Notify( + NotificationType::EXTENSION_BROWSER_ACTION_UPDATED, + Source<ExtensionAction>(extension->browser_action()), + Details<ExtensionActionState>(extension->browser_action_state())); + return true; +} + bool BrowserActionSetBadgeTextFunction::RunImpl() { + EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_DICTIONARY)); + DictionaryValue* details = static_cast<DictionaryValue*>(args_); + std::string badge_text; - EXTENSION_FUNCTION_VALIDATE(args_->GetAsString(&badge_text)); + EXTENSION_FUNCTION_VALIDATE(details->GetString(L"text", &badge_text)); Extension* extension = dispatcher()->GetExtension(); if (!extension->browser_action()) { @@ -97,8 +104,11 @@ bool BrowserActionSetBadgeTextFunction::RunImpl() { } bool BrowserActionSetBadgeBackgroundColorFunction::RunImpl() { - EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_LIST)); - ListValue* list = static_cast<ListValue*>(args_); + EXTENSION_FUNCTION_VALIDATE(args_->IsType(Value::TYPE_DICTIONARY)); + DictionaryValue* details = static_cast<DictionaryValue*>(args_); + + ListValue* list = NULL; + EXTENSION_FUNCTION_VALIDATE(details->GetList(L"color", &list)); EXTENSION_FUNCTION_VALIDATE(list->GetSize() == 4); int color_array[4] = {0}; |