Chromium Code Reviews| 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()); |
|
dcheng
2016/09/12 18:08:54
This method has slightly more substantial changes.
Devlin
2016/09/12 19:12:34
Yeah, this is more sane, and the copy isn't expens
|
| // 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( |