Index: chrome/browser/extensions/api/tabs/tabs_event_router.cc |
diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
index 6f17b79f02baff3c8fdbcdd1f705a830f74c8404..53ed84084150df99104d0e8bd1578787d42d4204 100644 |
--- a/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
+++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc |
@@ -192,14 +192,12 @@ static bool WillDispatchTabCreatedEvent( |
const Extension* extension, |
Event* event, |
const base::DictionaryValue* listener_filter) { |
- base::DictionaryValue* tab_value = |
- ExtensionTabUtil::CreateTabObject(contents, extension) |
- ->ToValue() |
- .release(); |
event->event_args->Clear(); |
- event->event_args->Append(tab_value); |
+ std::unique_ptr<base::DictionaryValue> tab_value = |
+ ExtensionTabUtil::CreateTabObject(contents, extension)->ToValue(); |
tab_value->SetBoolean(tabs_constants::kSelectedKey, active); |
tab_value->SetBoolean(tabs_constants::kActiveKey, active); |
+ event->event_args->Append(std::move(tab_value)); |
return true; |
} |
@@ -300,15 +298,15 @@ void TabsEventRouter::ActiveTabChanged(WebContents* old_contents, |
WebContents* new_contents, |
int index, |
int reason) { |
- std::unique_ptr<base::ListValue> args(new base::ListValue); |
+ auto args = base::MakeUnique<base::ListValue>(); |
int tab_id = ExtensionTabUtil::GetTabId(new_contents); |
args->AppendInteger(tab_id); |
- base::DictionaryValue* object_args = new base::DictionaryValue(); |
+ auto object_args = base::MakeUnique<base::DictionaryValue>(); |
object_args->Set(tabs_constants::kWindowIdKey, |
new FundamentalValue( |
ExtensionTabUtil::GetWindowIdOfTab(new_contents))); |
- args->Append(object_args); |
+ args->Append(object_args->CreateDeepCopy()); |
// The onActivated event replaced onActiveChanged and onSelectionChanged. The |
// deprecated events take two arguments: tabId, {windowId}. |
@@ -319,18 +317,19 @@ void TabsEventRouter::ActiveTabChanged(WebContents* old_contents, |
? EventRouter::USER_GESTURE_ENABLED |
: EventRouter::USER_GESTURE_NOT_ENABLED; |
DispatchEvent(profile, events::TABS_ON_SELECTION_CHANGED, |
- tabs::OnSelectionChanged::kEventName, |
- std::unique_ptr<base::ListValue>(args->DeepCopy()), gesture); |
+ tabs::OnSelectionChanged::kEventName, args->CreateDeepCopy(), |
+ gesture); |
DispatchEvent(profile, events::TABS_ON_ACTIVE_CHANGED, |
- tabs::OnActiveChanged::kEventName, |
- std::unique_ptr<base::ListValue>(args->DeepCopy()), gesture); |
+ tabs::OnActiveChanged::kEventName, std::move(args), gesture); |
// The onActivated event takes one argument: {windowId, tabId}. |
- args->Remove(0, NULL); |
+ auto on_activated_args = base::MakeUnique<base::ListValue>(); |
object_args->Set(tabs_constants::kTabIdKey, |
new FundamentalValue(tab_id)); |
+ on_activated_args->Append(std::move(object_args)); |
DispatchEvent(profile, events::TABS_ON_ACTIVATED, |
- tabs::OnActivated::kEventName, std::move(args), gesture); |
+ tabs::OnActivated::kEventName, std::move(on_activated_args), |
+ gesture); |
} |
void TabsEventRouter::TabSelectionChanged( |