Chromium Code Reviews| Index: chrome/browser/devtools/devtools_targets_ui.cc |
| diff --git a/chrome/browser/devtools/devtools_targets_ui.cc b/chrome/browser/devtools/devtools_targets_ui.cc |
| index 300848ea7f576675700aabba08003c5687bf674b..de98b33df02ffbba57ae83b9eb615cedfc9fe159 100644 |
| --- a/chrome/browser/devtools/devtools_targets_ui.cc |
| +++ b/chrome/browser/devtools/devtools_targets_ui.cc |
| @@ -253,8 +253,9 @@ void LocalTargetsUIHandler::SendTargets( |
| base::DictionaryValue* parent = id_to_descriptor[parent_id]; |
| base::ListValue* guests = NULL; |
| if (!parent->GetList(kGuestList, &guests)) { |
| - guests = new base::ListValue(); |
| - parent->Set(kGuestList, guests); |
| + auto guests_owned = base::MakeUnique<base::ListValue>(); |
| + guests = guests_owned.get(); |
| + parent->Set(kGuestList, std::move(guests)); |
|
jdoerrie
2017/04/06 14:25:49
Consider renaming guests to guests_weak and guests
vabr (Chromium)
2017/04/07 20:40:39
Oops, potential use-after-free. Thanks for catchin
|
| } |
| guests->Append(base::WrapUnique(descriptor)); |
| } |
| @@ -344,8 +345,7 @@ void AdbTargetsUIHandler::DeviceListChanged( |
| kAdbDeviceIdFormat, |
| device->serial().c_str()); |
| device_data->SetString(kTargetIdField, device_id); |
| - base::ListValue* browser_list = new base::ListValue(); |
| - device_data->Set(kAdbBrowsersList, browser_list); |
| + auto browser_list = base::MakeUnique<base::ListValue>(); |
| DevToolsAndroidBridge::RemoteBrowsers& browsers = device->browsers(); |
| for (DevToolsAndroidBridge::RemoteBrowsers::iterator bit = |
| @@ -365,9 +365,8 @@ void AdbTargetsUIHandler::DeviceListChanged( |
| browser_data->SetString(kTargetIdField, browser_id); |
| browser_data->SetString(kTargetSourceField, source_id()); |
| - base::ListValue* page_list = new base::ListValue(); |
| + auto page_list = base::MakeUnique<base::ListValue>(); |
| remote_browsers_[browser_id] = browser; |
| - browser_data->Set(kAdbPagesList, page_list); |
| for (const auto& page : browser->pages()) { |
| scoped_refptr<DevToolsAgentHost> host = page->CreateTarget(); |
| std::unique_ptr<base::DictionaryValue> target_data = Serialize(host); |
| @@ -380,9 +379,11 @@ void AdbTargetsUIHandler::DeviceListChanged( |
| targets_[host->GetId()] = host; |
| page_list->Append(std::move(target_data)); |
| } |
| + browser_data->Set(kAdbPagesList, std::move(page_list)); |
| browser_list->Append(std::move(browser_data)); |
| } |
| + device_data->Set(kAdbBrowsersList, std::move(browser_list)); |
| device_list.Append(std::move(device_data)); |
| } |
| SendSerializedTargets(device_list); |
| @@ -482,22 +483,22 @@ void PortForwardingStatusSerializer::PortStatusChanged( |
| base::DictionaryValue result; |
| for (ForwardingStatus::const_iterator sit = status.begin(); |
| sit != status.end(); ++sit) { |
| - base::DictionaryValue* port_status_dict = new base::DictionaryValue(); |
| + auto port_status_dict = base::MakeUnique<base::DictionaryValue>(); |
| const PortStatusMap& port_status_map = sit->second; |
| for (PortStatusMap::const_iterator it = port_status_map.begin(); |
| it != port_status_map.end(); ++it) { |
| port_status_dict->SetInteger(base::IntToString(it->first), it->second); |
| } |
| - base::DictionaryValue* device_status_dict = new base::DictionaryValue(); |
| - device_status_dict->Set(kPortForwardingPorts, port_status_dict); |
| + auto device_status_dict = base::MakeUnique<base::DictionaryValue>(); |
| + device_status_dict->Set(kPortForwardingPorts, std::move(port_status_dict)); |
| device_status_dict->SetString(kPortForwardingBrowserId, |
| sit->first->GetId()); |
| std::string device_id = base::StringPrintf( |
| kAdbDeviceIdFormat, |
| sit->first->serial().c_str()); |
| - result.Set(device_id, device_status_dict); |
| + result.Set(device_id, std::move(device_status_dict)); |
| } |
| callback_.Run(result); |
| } |