Remove most ScopedVector usage from c/b/extensions.
Replace them with vector<unique_ptr<T>>.
After this CL there will be only 3 places where ScopedVector
would still be around. Since those (language_settings_private_delegate.cc,
web_navigation_apitest.cc and chrome_content_browser_client_extensions_part.cc)
are non-trivial, I will try to remove ScopedVector from them in subsequent CLs.
BUG=556939
Test=None, internal only change.
Review-Url: https://codereview.chromium.org/2310683002
Cr-Commit-Position: refs/heads/master@{#417042}
diff --git a/chrome/browser/chromeos/customization/customization_document_unittest.cc b/chrome/browser/chromeos/customization/customization_document_unittest.cc
index 3ba0dac7..7ea30be 100644
--- a/chrome/browser/chromeos/customization/customization_document_unittest.cc
+++ b/chrome/browser/chromeos/customization/customization_document_unittest.cc
@@ -193,11 +193,12 @@
bool(const ExternalInstallInfoUpdateUrl&, bool));
MOCK_METHOD1(OnExternalProviderReady,
void(const extensions::ExternalProviderInterface* provider));
- MOCK_METHOD4(OnExternalProviderUpdateComplete,
- void(const extensions::ExternalProviderInterface*,
- const ScopedVector<ExternalInstallInfoUpdateUrl>&,
- const ScopedVector<ExternalInstallInfoFile>&,
- const std::set<std::string>& removed_extensions));
+ MOCK_METHOD4(
+ OnExternalProviderUpdateComplete,
+ void(const extensions::ExternalProviderInterface*,
+ const std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>&,
+ const std::vector<std::unique_ptr<ExternalInstallInfoFile>>&,
+ const std::set<std::string>& removed_extensions));
};
class ServicesCustomizationDocumentTest : public testing::Test {
diff --git a/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader_unittest.cc b/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader_unittest.cc
index f4a3f46..4adcbd9 100644
--- a/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader_unittest.cc
+++ b/chrome/browser/chromeos/extensions/device_local_account_external_policy_loader_unittest.cc
@@ -82,11 +82,12 @@
bool(const ExternalInstallInfoUpdateUrl&, bool));
MOCK_METHOD1(OnExternalProviderReady,
void(const extensions::ExternalProviderInterface* provider));
- MOCK_METHOD4(OnExternalProviderUpdateComplete,
- void(const extensions::ExternalProviderInterface*,
- const ScopedVector<ExternalInstallInfoUpdateUrl>&,
- const ScopedVector<ExternalInstallInfoFile>&,
- const std::set<std::string>& removed_extensions));
+ MOCK_METHOD4(
+ OnExternalProviderUpdateComplete,
+ void(const extensions::ExternalProviderInterface*,
+ const std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>&,
+ const std::vector<std::unique_ptr<ExternalInstallInfoFile>>&,
+ const std::set<std::string>& removed_extensions));
private:
DISALLOW_COPY_AND_ASSIGN(MockExternalPolicyProviderVisitor);
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
index 8e172c3..508c7db 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api_unittest.cc
@@ -106,7 +106,7 @@
std::unique_ptr<TestBrowserWindow> browser_window_;
std::unique_ptr<Browser> browser_;
- ScopedVector<TestExtensionDir> test_extension_dirs_;
+ std::vector<std::unique_ptr<TestExtensionDir>> test_extension_dirs_;
DISALLOW_COPY_AND_ASSIGN(DeveloperPrivateApiUnitTest);
};
@@ -128,8 +128,8 @@
" \"permissions\": [\"*://*/*\"]"
"}";
- test_extension_dirs_.push_back(new TestExtensionDir);
- TestExtensionDir* dir = test_extension_dirs_.back();
+ test_extension_dirs_.push_back(base::MakeUnique<TestExtensionDir>());
+ TestExtensionDir* dir = test_extension_dirs_.back().get();
dir->WriteManifest(kManifest);
// TODO(devlin): We should extract out methods to load an unpacked extension
diff --git a/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc b/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc
index 8c22f78..adf66eb 100644
--- a/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc
+++ b/chrome/browser/extensions/api/gcd_private/privet_v3_session.cc
@@ -10,6 +10,7 @@
#include "base/location.h"
#include "base/logging.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/string_number_conversions.h"
#include "base/threading/thread_task_runner_handle.h"
@@ -486,7 +487,7 @@
FetcherDelegate* fetcher =
new FetcherDelegate(weak_ptr_factory_.GetWeakPtr(), callback);
if (!orphaned)
- fetchers_.push_back(fetcher);
+ fetchers_.push_back(base::WrapUnique(fetcher));
net::URLFetcher* url_fetcher =
fetcher->CreateURLFetcher(url, request_type, orphaned);
url_fetcher->SetLoadFlags(url_fetcher->GetLoadFlags() |
@@ -500,7 +501,14 @@
}
void PrivetV3Session::DeleteFetcher(const FetcherDelegate* fetcher) {
- fetchers_.erase(std::find(fetchers_.begin(), fetchers_.end(), fetcher));
+ for (std::vector<std::unique_ptr<FetcherDelegate>>::iterator iter =
+ fetchers_.begin();
+ iter != fetchers_.end(); ++iter) {
+ if (iter->get() == fetcher) {
+ fetchers_.erase(iter);
+ break;
+ }
+ }
}
void PrivetV3Session::Cancel() {
diff --git a/chrome/browser/extensions/api/gcd_private/privet_v3_session.h b/chrome/browser/extensions/api/gcd_private/privet_v3_session.h
index f653959b..8a29a5f 100644
--- a/chrome/browser/extensions/api/gcd_private/privet_v3_session.h
+++ b/chrome/browser/extensions/api/gcd_private/privet_v3_session.h
@@ -13,7 +13,6 @@
#include "base/callback.h"
#include "base/gtest_prod_util.h"
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h"
#include "chrome/common/extensions/api/gcd_private.h"
#include "net/url_request/url_fetcher.h"
@@ -125,7 +124,7 @@
bool use_https_ = false;
// List of fetches to cancel when session is destroyed.
- ScopedVector<FetcherDelegate> fetchers_;
+ std::vector<std::unique_ptr<FetcherDelegate>> fetchers_;
// Intercepts POST requests. Used by tests only.
base::Callback<void(const base::DictionaryValue&)> on_post_data_;
diff --git a/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.cc b/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.cc
index 602195e2..4c7b585 100644
--- a/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.cc
+++ b/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.cc
@@ -6,7 +6,6 @@
#include <memory>
-#include "base/memory/scoped_vector.h"
#include "base/rand_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/values.h"
@@ -69,16 +68,15 @@
}
void CreateMappingForUnmappedDevices(
- std::vector<DeviceInfo*>* device_info,
+ const std::vector<std::unique_ptr<DeviceInfo>>& device_info,
base::DictionaryValue* value) {
- for (unsigned int i = 0; i < device_info->size(); ++i) {
- DeviceInfo* device = (*device_info)[i];
+ for (const std::unique_ptr<DeviceInfo>& device : device_info) {
std::string local_id = GetPublicIdFromGUID(*value,
device->guid());
// If the device does not have a local id, set one.
if (local_id.empty()) {
- local_id = GetRandomId(*value, device_info->size());
+ local_id = GetRandomId(*value, device_info.size());
value->SetString(local_id, device->guid());
}
device->set_public_id(local_id);
@@ -91,14 +89,11 @@
Profile* profile) {
DCHECK(crx_file::id_util::IdIsValid(extension_id)) << extension_id
<< " is not valid";
- ScopedVector<DeviceInfo> devices = GetAllSignedInDevices(extension_id,
- profile);
- for (ScopedVector<DeviceInfo>::iterator it = devices.begin();
- it != devices.end();
- ++it) {
- if ((*it)->guid() == client_id) {
- std::unique_ptr<DeviceInfo> device(*it);
- devices.weak_erase(it);
+ std::vector<std::unique_ptr<DeviceInfo>> devices =
+ GetAllSignedInDevices(extension_id, profile);
+ for (auto& iter : devices) {
+ if (iter->guid() == client_id) {
+ std::unique_ptr<DeviceInfo> device = std::move(iter);
return device;
}
}
diff --git a/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.h b/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.h
index 69a8dfa..046ff752 100644
--- a/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.h
+++ b/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.h
@@ -45,7 +45,7 @@
// The dictionary would have the public id as the key and the
// device guid as the value.
void CreateMappingForUnmappedDevices(
- std::vector<sync_driver::DeviceInfo*>* device_info,
+ const std::vector<std::unique_ptr<sync_driver::DeviceInfo>>& device_info,
base::DictionaryValue* value);
// Gets the device info for a given client id. If the device is not found
diff --git a/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper_unittest.cc b/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper_unittest.cc
index 9396b873..61a441b0 100644
--- a/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper_unittest.cc
+++ b/chrome/browser/extensions/api/signed_in_devices/id_mapping_helper_unittest.cc
@@ -8,7 +8,7 @@
#include <string>
#include "base/guid.h"
-#include "base/memory/scoped_vector.h"
+#include "base/memory/ptr_util.h"
#include "base/values.h"
#include "components/sync/device_info/device_info.h"
#include "testing/gmock/include/gmock/gmock.h"
@@ -30,25 +30,19 @@
}
TEST(IdMappingHelperTest, SetIdsForDevices) {
- ScopedVector<DeviceInfo> devices;
+ std::vector<std::unique_ptr<DeviceInfo>> devices;
- devices.push_back(new DeviceInfo(base::GenerateGUID(),
- "abc Device",
- "XYZ v1",
- "XYZ SyncAgent v1",
- sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
- "device_id1"));
+ devices.push_back(base::MakeUnique<DeviceInfo>(
+ base::GenerateGUID(), "abc Device", "XYZ v1", "XYZ SyncAgent v1",
+ sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id1"));
- devices.push_back(new DeviceInfo(base::GenerateGUID(),
- "def Device",
- "XYZ v1",
- "XYZ SyncAgent v1",
- sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
- "device_id2"));
+ devices.push_back(base::MakeUnique<DeviceInfo>(
+ base::GenerateGUID(), "def Device", "XYZ v1", "XYZ SyncAgent v1",
+ sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id2"));
base::DictionaryValue dictionary;
- CreateMappingForUnmappedDevices(&(devices.get()), &dictionary);
+ CreateMappingForUnmappedDevices(devices, &dictionary);
std::string public_id1 = devices[0]->public_id();
std::string public_id2 = devices[1]->public_id();
@@ -59,14 +53,11 @@
EXPECT_NE(public_id1, public_id2);
// Now add a third device.
- devices.push_back(new DeviceInfo(base::GenerateGUID(),
- "ghi Device",
- "XYZ v1",
- "XYZ SyncAgent v1",
- sync_pb::SyncEnums_DeviceType_TYPE_LINUX,
- "device_id3"));
+ devices.push_back(base::MakeUnique<DeviceInfo>(
+ base::GenerateGUID(), "ghi Device", "XYZ v1", "XYZ SyncAgent v1",
+ sync_pb::SyncEnums_DeviceType_TYPE_LINUX, "device_id3"));
- CreateMappingForUnmappedDevices(&(devices.get()), &dictionary);
+ CreateMappingForUnmappedDevices(devices, &dictionary);
// Now make sure the existing ids are not changed.
EXPECT_EQ(public_id1, devices[0]->public_id());
diff --git a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.cc b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.cc
index 53e7dd7..e30c239 100644
--- a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.cc
+++ b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.cc
@@ -7,7 +7,6 @@
#include <memory>
#include <utility>
-#include "base/memory/scoped_vector.h"
#include "base/values.h"
#include "chrome/browser/extensions/api/signed_in_devices/id_mapping_helper.h"
#include "chrome/browser/profiles/profile.h"
@@ -54,12 +53,13 @@
// Helper routine to get all signed in devices. The helper takes in
// the pointers for |DeviceInfoTracker| and |Extensionprefs|. This
// makes it easier to test by passing mock values for these pointers.
-ScopedVector<DeviceInfo> GetAllSignedInDevices(
+std::vector<std::unique_ptr<DeviceInfo>> GetAllSignedInDevices(
const std::string& extension_id,
DeviceInfoTracker* device_tracker,
ExtensionPrefs* extension_prefs) {
DCHECK(device_tracker);
- ScopedVector<DeviceInfo> devices = device_tracker->GetAllDeviceInfo();
+ std::vector<std::unique_ptr<DeviceInfo>> devices =
+ device_tracker->GetAllDeviceInfo();
const base::DictionaryValue* mapping_dictionary = GetIdMappingDictionary(
extension_prefs,
extension_id);
@@ -70,8 +70,7 @@
std::unique_ptr<base::DictionaryValue> editable_mapping_dictionary(
mapping_dictionary->DeepCopy());
- CreateMappingForUnmappedDevices(&(devices.get()),
- editable_mapping_dictionary.get());
+ CreateMappingForUnmappedDevices(devices, editable_mapping_dictionary.get());
// Write into |ExtensionPrefs| which will get persisted in disk.
extension_prefs->UpdateExtensionPref(extension_id,
@@ -80,7 +79,7 @@
return devices;
}
-ScopedVector<DeviceInfo> GetAllSignedInDevices(
+std::vector<std::unique_ptr<DeviceInfo>> GetAllSignedInDevices(
const std::string& extension_id,
Profile* profile) {
// Get the device tracker and extension prefs pointers
@@ -90,7 +89,7 @@
DCHECK(device_tracker);
if (!device_tracker->IsSyncing()) {
// Devices are not sync'ing.
- return ScopedVector<DeviceInfo>();
+ return std::vector<std::unique_ptr<DeviceInfo>>();
}
ExtensionPrefs* extension_prefs = ExtensionPrefs::Get(profile);
@@ -131,16 +130,13 @@
return true;
}
- ScopedVector<DeviceInfo> devices =
+ std::vector<std::unique_ptr<DeviceInfo>> devices =
GetAllSignedInDevices(extension_id(), GetProfile());
std::unique_ptr<base::ListValue> result(new base::ListValue());
- for (ScopedVector<DeviceInfo>::const_iterator it = devices.begin();
- it != devices.end();
- ++it) {
- result->Append((*it)->ToValue());
- }
+ for (const std::unique_ptr<DeviceInfo>& device : devices)
+ result->Append(device->ToValue());
SetResult(std::move(result));
return true;
diff --git a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.h b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.h
index 1d1c09223..ef6d31f 100644
--- a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.h
+++ b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.h
@@ -8,7 +8,6 @@
#include <string>
#include <vector>
-#include "base/memory/scoped_vector.h"
#include "chrome/browser/extensions/chrome_extension_function.h"
namespace sync_driver {
@@ -28,11 +27,11 @@
// filled with the list of devices associated with the account signed into this
// |profile|. This function needs the |extension_id| because the
// public device ids are set per extension.
-ScopedVector<sync_driver::DeviceInfo> GetAllSignedInDevices(
+std::vector<std::unique_ptr<sync_driver::DeviceInfo>> GetAllSignedInDevices(
const std::string& extension_id,
Profile* profile);
-ScopedVector<sync_driver::DeviceInfo> GetAllSignedInDevices(
+std::vector<std::unique_ptr<sync_driver::DeviceInfo>> GetAllSignedInDevices(
const std::string& extension_id,
sync_driver::DeviceInfoTracker* device_tracker,
ExtensionPrefs* extension_prefs);
diff --git a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api_unittest.cc b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api_unittest.cc
index 03fc72d..6215435 100644
--- a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api_unittest.cc
+++ b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api_unittest.cc
@@ -44,23 +44,19 @@
return std::unique_ptr<DeviceInfo>();
}
- static DeviceInfo* CloneDeviceInfo(const DeviceInfo* device_info) {
- return new DeviceInfo(device_info->guid(),
- device_info->client_name(),
- device_info->chrome_version(),
- device_info->sync_user_agent(),
- device_info->device_type(),
- device_info->signin_scoped_device_id());
+ static std::unique_ptr<DeviceInfo> CloneDeviceInfo(
+ const DeviceInfo& device_info) {
+ return base::MakeUnique<DeviceInfo>(
+ device_info.guid(), device_info.client_name(),
+ device_info.chrome_version(), device_info.sync_user_agent(),
+ device_info.device_type(), device_info.signin_scoped_device_id());
}
- ScopedVector<DeviceInfo> GetAllDeviceInfo() const override {
- ScopedVector<DeviceInfo> list;
+ std::vector<std::unique_ptr<DeviceInfo>> GetAllDeviceInfo() const override {
+ std::vector<std::unique_ptr<DeviceInfo>> list;
- for (std::vector<const DeviceInfo*>::const_iterator iter = devices_.begin();
- iter != devices_.end();
- ++iter) {
- list.push_back(CloneDeviceInfo(*iter));
- }
+ for (const DeviceInfo* device : devices_)
+ list.push_back(CloneDeviceInfo(*device));
return list;
}
@@ -109,7 +105,7 @@
device_tracker.Add(&device_info1);
device_tracker.Add(&device_info2);
- ScopedVector<DeviceInfo> output1 = GetAllSignedInDevices(
+ std::vector<std::unique_ptr<DeviceInfo>> output1 = GetAllSignedInDevices(
extension_test->id(), &device_tracker, extension_prefs.prefs());
std::string public_id1 = output1[0]->public_id();
@@ -130,7 +126,7 @@
device_tracker.Add(&device_info3);
- ScopedVector<DeviceInfo> output2 = GetAllSignedInDevices(
+ std::vector<std::unique_ptr<DeviceInfo>> output2 = GetAllSignedInDevices(
extension_test->id(), &device_tracker, extension_prefs.prefs());
EXPECT_EQ(output2[0]->public_id(), public_id1);
@@ -254,8 +250,8 @@
.WillOnce(Return(&device_tracker));
EXPECT_CALL(*pss_mock, Shutdown());
- ScopedVector<DeviceInfo> output = GetAllSignedInDevices(
- extension()->id(), profile());
+ std::vector<std::unique_ptr<DeviceInfo>> output =
+ GetAllSignedInDevices(extension()->id(), profile());
EXPECT_TRUE(output.empty());
}
diff --git a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.cc b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.cc
index b21ff2174d..8bea7cd 100644
--- a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.cc
+++ b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.cc
@@ -10,7 +10,7 @@
#include <vector>
#include "base/lazy_instance.h"
-#include "base/memory/scoped_vector.h"
+#include "base/memory/ptr_util.h"
#include "base/values.h"
#include "chrome/browser/extensions/api/signed_in_devices/signed_in_devices_api.h"
#include "chrome/browser/extensions/extension_service.h"
@@ -61,11 +61,11 @@
void SignedInDevicesChangeObserver::OnDeviceInfoChange() {
// There is a change in the list of devices. Get all devices and send them to
// the listener.
- ScopedVector<DeviceInfo> devices = GetAllSignedInDevices(extension_id_,
- profile_);
+ std::vector<std::unique_ptr<DeviceInfo>> devices =
+ GetAllSignedInDevices(extension_id_, profile_);
std::vector<api::signed_in_devices::DeviceInfo> args;
- for (const DeviceInfo* info : devices) {
+ for (const std::unique_ptr<DeviceInfo>& info : devices) {
api::signed_in_devices::DeviceInfo api_device;
FillDeviceInfo(*info, &api_device);
args.push_back(std::move(api_device));
@@ -122,19 +122,16 @@
void SignedInDevicesManager::OnListenerAdded(
const EventListenerInfo& details) {
- for (ScopedVector<SignedInDevicesChangeObserver>::const_iterator it =
- change_observers_.begin();
- it != change_observers_.end();
- ++it) {
- if ((*it)->extension_id() == details.extension_id) {
+ for (const std::unique_ptr<SignedInDevicesChangeObserver>& observer :
+ change_observers_) {
+ if (observer->extension_id() == details.extension_id) {
DCHECK(false) <<"OnListenerAded fired twice for same extension";
return;
}
}
- change_observers_.push_back(new SignedInDevicesChangeObserver(
- details.extension_id,
- profile_));
+ change_observers_.push_back(base::MakeUnique<SignedInDevicesChangeObserver>(
+ details.extension_id, profile_));
}
void SignedInDevicesManager::OnListenerRemoved(
@@ -144,10 +141,9 @@
void SignedInDevicesManager::RemoveChangeObserverForExtension(
const std::string& extension_id) {
- for (ScopedVector<SignedInDevicesChangeObserver>::iterator it =
- change_observers_.begin();
- it != change_observers_.end();
- ++it) {
+ for (std::vector<std::unique_ptr<SignedInDevicesChangeObserver>>::iterator
+ it = change_observers_.begin();
+ it != change_observers_.end(); ++it) {
if ((*it)->extension_id() == extension_id) {
change_observers_.erase(it);
return;
diff --git a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.h b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.h
index 8bc591b7..ba7a0802 100644
--- a/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.h
+++ b/chrome/browser/extensions/api/signed_in_devices/signed_in_devices_manager.h
@@ -9,7 +9,6 @@
#include "base/gtest_prod_util.h"
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
#include "base/scoped_observer.h"
#include "components/sync/device_info/device_info_tracker.h"
#include "extensions/browser/browser_context_keyed_api_factory.h"
@@ -91,7 +90,7 @@
void RemoveChangeObserverForExtension(const std::string& extension_id);
Profile* const profile_;
- ScopedVector<SignedInDevicesChangeObserver> change_observers_;
+ std::vector<std::unique_ptr<SignedInDevicesChangeObserver>> change_observers_;
// Listen to extension unloaded notification.
ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
diff --git a/chrome/browser/extensions/api/storage/setting_sync_data.h b/chrome/browser/extensions/api/storage/setting_sync_data.h
index e8f21e58..fd843fb 100644
--- a/chrome/browser/extensions/api/storage/setting_sync_data.h
+++ b/chrome/browser/extensions/api/storage/setting_sync_data.h
@@ -9,7 +9,6 @@
#include <string>
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
#include "base/values.h"
#include "components/sync/api/sync_change.h"
@@ -68,7 +67,7 @@
DISALLOW_COPY_AND_ASSIGN(SettingSyncData);
};
-typedef ScopedVector<SettingSyncData> SettingSyncDataList;
+using SettingSyncDataList = std::vector<std::unique_ptr<SettingSyncData>>;
} // namespace extensions
diff --git a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
index c35a85d0..0e27331c 100644
--- a/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
+++ b/chrome/browser/extensions/api/storage/settings_sync_unittest.cc
@@ -11,7 +11,6 @@
#include "base/files/scoped_temp_dir.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
-#include "base/memory/linked_ptr.h"
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
@@ -54,7 +53,7 @@
// More saving typing. Maps extension IDs to a list of sync changes for that
// extension.
using SettingSyncDataMultimap =
- std::map<std::string, linked_ptr<SettingSyncDataList>>;
+ std::map<std::string, std::unique_ptr<SettingSyncDataList>>;
// Gets the pretty-printed JSON for a value.
static std::string GetJson(const base::Value& value) {
@@ -120,7 +119,7 @@
}
for (syncer::SyncChangeList::const_iterator it = change_list.begin();
it != change_list.end(); ++it) {
- changes_.push_back(new SettingSyncData(*it));
+ changes_.push_back(base::MakeUnique<SettingSyncData>(*it));
}
return syncer::SyncError();
}
@@ -146,11 +145,9 @@
SettingSyncData* GetOnlyChange(const std::string& extension_id,
const std::string& key) {
std::vector<SettingSyncData*> matching_changes;
- for (SettingSyncDataList::iterator it = changes_.begin();
- it != changes_.end(); ++it) {
- if ((*it)->extension_id() == extension_id && (*it)->key() == key) {
- matching_changes.push_back(*it);
- }
+ for (const std::unique_ptr<SettingSyncData>& change : changes_) {
+ if (change->extension_id() == extension_id && change->key() == key)
+ matching_changes.push_back(change.get());
}
if (matching_changes.empty()) {
ADD_FAILURE() << "No matching changes for " << extension_id << "/" <<
@@ -240,12 +237,12 @@
SettingSyncDataMultimap as_map;
for (syncer::SyncDataList::iterator it = as_list.begin();
it != as_list.end(); ++it) {
- SettingSyncData* sync_data = new SettingSyncData(*it);
- linked_ptr<SettingSyncDataList>& list_for_extension =
+ std::unique_ptr<SettingSyncData> sync_data(new SettingSyncData(*it));
+ std::unique_ptr<SettingSyncDataList>& list_for_extension =
as_map[sync_data->extension_id()];
- if (!list_for_extension.get())
+ if (!list_for_extension)
list_for_extension.reset(new SettingSyncDataList());
- list_for_extension->push_back(sync_data);
+ list_for_extension->push_back(std::move(sync_data));
}
return as_map;
}
@@ -1350,7 +1347,7 @@
storage->Set(DEFAULTS, "key.with.spot", *string_value);
ASSERT_EQ(1u, sync_processor_->changes().size());
- SettingSyncData* sync_data = sync_processor_->changes()[0];
+ SettingSyncData* sync_data = sync_processor_->changes()[0].get();
EXPECT_EQ(syncer::SyncChange::ACTION_ADD, sync_data->change_type());
EXPECT_EQ("ext", sync_data->extension_id());
EXPECT_EQ("key.with.spot", sync_data->key());
diff --git a/chrome/browser/extensions/api/storage/syncable_settings_storage.cc b/chrome/browser/extensions/api/storage/syncable_settings_storage.cc
index 811dd363..102e2b34 100644
--- a/chrome/browser/extensions/api/storage/syncable_settings_storage.cc
+++ b/chrome/browser/extensions/api/storage/syncable_settings_storage.cc
@@ -6,6 +6,7 @@
#include <utility>
+#include "base/memory/ptr_util.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/extensions/api/storage/settings_sync_processor.h"
#include "chrome/browser/extensions/api/storage/settings_sync_util.h"
@@ -219,13 +220,13 @@
// Sync and local values are the same, no changes to send.
} else {
// Sync value is different, update local setting with new value.
- changes->push_back(new SettingSyncData(
+ changes->push_back(base::MakeUnique<SettingSyncData>(
syncer::SyncChange::ACTION_UPDATE, extension_id_, it.key(),
std::move(sync_value)));
}
} else {
// Not synced, delete local setting.
- changes->push_back(new SettingSyncData(
+ changes->push_back(base::MakeUnique<SettingSyncData>(
syncer::SyncChange::ACTION_DELETE, extension_id_, it.key(),
std::unique_ptr<base::Value>(new base::DictionaryValue())));
}
@@ -238,7 +239,7 @@
std::string key = base::DictionaryValue::Iterator(*sync_state).key();
std::unique_ptr<base::Value> value;
CHECK(sync_state->RemoveWithoutPathExpansion(key, &value));
- changes->push_back(new SettingSyncData(
+ changes->push_back(base::MakeUnique<SettingSyncData>(
syncer::SyncChange::ACTION_ADD, extension_id_, key, std::move(value)));
}
@@ -268,11 +269,10 @@
std::vector<syncer::SyncError> errors;
ValueStoreChangeList changes;
- for (SettingSyncDataList::iterator it = sync_changes->begin();
- it != sync_changes->end(); ++it) {
- DCHECK_EQ(extension_id_, (*it)->extension_id());
- const std::string& key = (*it)->key();
- std::unique_ptr<base::Value> change_value = (*it)->PassValue();
+ for (const std::unique_ptr<SettingSyncData>& sync_change : *sync_changes) {
+ DCHECK_EQ(extension_id_, sync_change->extension_id());
+ const std::string& key = sync_change->key();
+ std::unique_ptr<base::Value> change_value = sync_change->PassValue();
std::unique_ptr<base::Value> current_value;
{
@@ -292,7 +292,7 @@
syncer::SyncError error;
- switch ((*it)->change_type()) {
+ switch (sync_change->change_type()) {
case syncer::SyncChange::ACTION_ADD:
if (!current_value.get()) {
error = OnSyncAdd(key, std::move(change_value), &changes);
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_tab.cc b/chrome/browser/extensions/api/tab_capture/offscreen_tab.cc
index d7e2677..f50fdf9 100644
--- a/chrome/browser/extensions/api/tab_capture/offscreen_tab.cc
+++ b/chrome/browser/extensions/api/tab_capture/offscreen_tab.cc
@@ -8,6 +8,7 @@
#include "base/bind.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "chrome/browser/extensions/api/tab_capture/tab_capture_registry.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/web_contents_sizer.h"
@@ -57,15 +58,24 @@
if (tabs_.size() >= kMaxOffscreenTabsPerExtension)
return nullptr; // Maximum number of offscreen tabs reached.
- tabs_.push_back(new OffscreenTab(this));
+ // OffscreenTab cannot be created with MakeUnique<OffscreenTab> since the
+ // constructor is protected. So create it separately, and then move it to
+ // |tabs_| below.
+ std::unique_ptr<OffscreenTab> offscreen_tab(new OffscreenTab(this));
+ tabs_.push_back(std::move(offscreen_tab));
tabs_.back()->Start(start_url, initial_size, optional_presentation_id);
- return tabs_.back();
+ return tabs_.back().get();
}
void OffscreenTabsOwner::DestroyTab(OffscreenTab* tab) {
- const auto it = std::find(tabs_.begin(), tabs_.end(), tab);
- if (it != tabs_.end())
- tabs_.erase(it);
+ for (std::vector<std::unique_ptr<OffscreenTab>>::iterator iter =
+ tabs_.begin();
+ iter != tabs_.end(); ++iter) {
+ if (iter->get() == tab) {
+ tabs_.erase(iter);
+ break;
+ }
+ }
}
OffscreenTab::OffscreenTab(OffscreenTabsOwner* owner)
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_tab.h b/chrome/browser/extensions/api/tab_capture/offscreen_tab.h
index 712c117..e639319 100644
--- a/chrome/browser/extensions/api/tab_capture/offscreen_tab.h
+++ b/chrome/browser/extensions/api/tab_capture/offscreen_tab.h
@@ -11,7 +11,6 @@
#include <vector>
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
#include "base/time/time.h"
#include "base/timer/timer.h"
#include "content/public/browser/web_contents_delegate.h"
@@ -75,7 +74,7 @@
explicit OffscreenTabsOwner(content::WebContents* extension_web_contents);
content::WebContents* const extension_web_contents_;
- ScopedVector<OffscreenTab> tabs_;
+ std::vector<std::unique_ptr<OffscreenTab>> tabs_;
DISALLOW_COPY_AND_ASSIGN(OffscreenTabsOwner);
};
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc b/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
index 5745674d..c415de6 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_registry.cc
@@ -8,6 +8,7 @@
#include "base/lazy_instance.h"
#include "base/macros.h"
+#include "base/memory/ptr_util.h"
#include "base/values.h"
#include "chrome/browser/sessions/session_tab_helper.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
@@ -272,7 +273,7 @@
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK(list_of_capture_info);
list_of_capture_info->Clear();
- for (const LiveRequest* request : requests_) {
+ for (const std::unique_ptr<LiveRequest>& request : requests_) {
if (request->is_anonymous() || !request->is_verified() ||
request->extension_id() != extension_id)
continue;
@@ -287,7 +288,8 @@
const Extension* extension,
UnloadedExtensionInfo::Reason reason) {
// Cleanup all the requested media streams for this extension.
- for (ScopedVector<LiveRequest>::iterator it = requests_.begin();
+ for (std::vector<std::unique_ptr<LiveRequest>>::iterator it =
+ requests_.begin();
it != requests_.end();) {
if ((*it)->extension_id() == extension->id()) {
it = requests_.erase(it);
@@ -313,8 +315,8 @@
}
}
- requests_.push_back(
- new LiveRequest(target_contents, extension_id, is_anonymous, this));
+ requests_.push_back(base::MakeUnique<LiveRequest>(
+ target_contents, extension_id, is_anonymous, this));
return true;
}
@@ -436,31 +438,31 @@
TabCaptureRegistry::LiveRequest* TabCaptureRegistry::FindRequest(
const content::WebContents* target_contents) const {
- for (ScopedVector<LiveRequest>::const_iterator it = requests_.begin();
- it != requests_.end(); ++it) {
- if ((*it)->web_contents() == target_contents)
- return *it;
+ for (const auto& request : requests_) {
+ if (request->web_contents() == target_contents)
+ return request.get();
}
- return NULL;
+ return nullptr;
}
TabCaptureRegistry::LiveRequest* TabCaptureRegistry::FindRequest(
int original_target_render_process_id,
int original_target_render_frame_id) const {
- for (ScopedVector<LiveRequest>::const_iterator it = requests_.begin();
- it != requests_.end(); ++it) {
- if ((*it)->WasOriginallyTargettingRenderFrameID(
+ for (const std::unique_ptr<LiveRequest>& request : requests_) {
+ if (request->WasOriginallyTargettingRenderFrameID(
original_target_render_process_id,
- original_target_render_frame_id))
- return *it;
+ original_target_render_frame_id)) {
+ return request.get();
+ }
}
- return NULL;
+ return nullptr;
}
void TabCaptureRegistry::KillRequest(LiveRequest* request) {
- for (ScopedVector<LiveRequest>::iterator it = requests_.begin();
+ for (std::vector<std::unique_ptr<LiveRequest>>::iterator it =
+ requests_.begin();
it != requests_.end(); ++it) {
- if ((*it) == request) {
+ if (it->get() == request) {
requests_.erase(it);
return;
}
diff --git a/chrome/browser/extensions/api/tab_capture/tab_capture_registry.h b/chrome/browser/extensions/api/tab_capture/tab_capture_registry.h
index 5698fed0e..5b64283 100644
--- a/chrome/browser/extensions/api/tab_capture/tab_capture_registry.h
+++ b/chrome/browser/extensions/api/tab_capture/tab_capture_registry.h
@@ -10,7 +10,6 @@
#include <vector>
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
#include "base/scoped_observer.h"
#include "chrome/browser/media/media_capture_devices_dispatcher.h"
#include "chrome/common/extensions/api/tab_capture.h"
@@ -110,7 +109,7 @@
void KillRequest(LiveRequest* request);
content::BrowserContext* const browser_context_;
- ScopedVector<LiveRequest> requests_;
+ std::vector<std::unique_ptr<LiveRequest>> requests_;
ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
extension_registry_observer_;
diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
index 5ab2706..36188eb 100644
--- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
+++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc
@@ -10,7 +10,6 @@
#include "base/bind.h"
#include "base/lazy_instance.h"
#include "base/macros.h"
-#include "base/memory/scoped_vector.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
@@ -73,7 +72,8 @@
const std::string& id);
private:
- typedef ScopedVector<WebstoreInstaller::Approval> ApprovalList;
+ using ApprovalList =
+ std::vector<std::unique_ptr<WebstoreInstaller::Approval>>;
ApprovalList approvals_;
@@ -85,18 +85,19 @@
void PendingApprovals::PushApproval(
std::unique_ptr<WebstoreInstaller::Approval> approval) {
- approvals_.push_back(approval.release());
+ approvals_.push_back(std::move(approval));
}
std::unique_ptr<WebstoreInstaller::Approval> PendingApprovals::PopApproval(
Profile* profile,
const std::string& id) {
- for (size_t i = 0; i < approvals_.size(); ++i) {
- WebstoreInstaller::Approval* approval = approvals_[i];
- if (approval->extension_id == id &&
- profile->IsSameProfile(approval->profile)) {
- approvals_.weak_erase(approvals_.begin() + i);
- return std::unique_ptr<WebstoreInstaller::Approval>(approval);
+ for (ApprovalList::iterator iter = approvals_.begin();
+ iter != approvals_.end(); ++iter) {
+ if (iter->get()->extension_id == id &&
+ profile->IsSameProfile(iter->get()->profile)) {
+ std::unique_ptr<WebstoreInstaller::Approval> approval = std::move(*iter);
+ approvals_.erase(iter);
+ return approval;
}
}
return std::unique_ptr<WebstoreInstaller::Approval>();
diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc
index 6b926d7..c7e5f4f 100644
--- a/chrome/browser/extensions/extension_management.cc
+++ b/chrome/browser/extensions/extension_management.cc
@@ -10,6 +10,7 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/logging.h"
+#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string16.h"
#include "base/strings/string_util.h"
@@ -59,8 +60,10 @@
// before first call to Refresh(), so in order to resolve this, Refresh() must
// be called in the initialization of ExtensionManagement.
Refresh();
- providers_.push_back(new StandardManagementPolicyProvider(this));
- providers_.push_back(new PermissionsBasedManagementPolicyProvider(this));
+ providers_.push_back(
+ base::MakeUnique<StandardManagementPolicyProvider>(this));
+ providers_.push_back(
+ base::MakeUnique<PermissionsBasedManagementPolicyProvider>(this));
}
ExtensionManagement::~ExtensionManagement() {
@@ -79,9 +82,9 @@
observer_list_.RemoveObserver(observer);
}
-std::vector<ManagementPolicy::Provider*> ExtensionManagement::GetProviders()
- const {
- return providers_.get();
+const std::vector<std::unique_ptr<ManagementPolicy::Provider>>&
+ExtensionManagement::GetProviders() const {
+ return providers_;
}
bool ExtensionManagement::BlacklistedByDefault() const {
diff --git a/chrome/browser/extensions/extension_management.h b/chrome/browser/extensions/extension_management.h
index b3010588..9d9831e8 100644
--- a/chrome/browser/extensions/extension_management.h
+++ b/chrome/browser/extensions/extension_management.h
@@ -12,7 +12,6 @@
#include "base/containers/scoped_ptr_hash_map.h"
#include "base/macros.h"
#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_vector.h"
#include "base/memory/singleton.h"
#include "base/observer_list.h"
#include "base/values.h"
@@ -82,7 +81,8 @@
// Get the list of ManagementPolicy::Provider controlled by extension
// management policy settings.
- std::vector<ManagementPolicy::Provider*> GetProviders() const;
+ const std::vector<std::unique_ptr<ManagementPolicy::Provider>>& GetProviders()
+ const;
// Checks if extensions are blacklisted by default, by policy. When true,
// this means that even extensions without an ID should be blacklisted (e.g.
@@ -187,7 +187,7 @@
base::ObserverList<Observer, true> observer_list_;
PrefChangeRegistrar pref_change_registrar_;
- ScopedVector<ManagementPolicy::Provider> providers_;
+ std::vector<std::unique_ptr<ManagementPolicy::Provider>> providers_;
DISALLOW_COPY_AND_ASSIGN(ExtensionManagement);
};
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index cfd8ba1..4be4f7f1 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -231,20 +231,22 @@
void ExtensionService::OnExternalProviderUpdateComplete(
const ExternalProviderInterface* provider,
- const ScopedVector<ExternalInstallInfoUpdateUrl>& update_url_extensions,
- const ScopedVector<ExternalInstallInfoFile>& file_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>&
+ update_url_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoFile>>&
+ file_extensions,
const std::set<std::string>& removed_extensions) {
// Update pending_extension_manager() with the new extensions first.
- for (auto* extension : update_url_extensions)
+ for (const auto& extension : update_url_extensions)
OnExternalExtensionUpdateUrlFound(*extension, false);
- for (auto* extension : file_extensions)
+ for (const auto& extension : file_extensions)
OnExternalExtensionFileFound(*extension);
#if DCHECK_IS_ON()
for (const std::string& id : removed_extensions) {
- for (auto* extension : update_url_extensions)
+ for (const auto& extension : update_url_extensions)
DCHECK_NE(id, extension->extension_id);
- for (auto* extension : file_extensions)
+ for (const auto& extension : file_extensions)
DCHECK_NE(id, extension->extension_id);
}
#endif
diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h
index 55a8b3f..942e974 100644
--- a/chrome/browser/extensions/extension_service.h
+++ b/chrome/browser/extensions/extension_service.h
@@ -242,9 +242,10 @@
const extensions::ExternalProviderInterface* provider) override;
void OnExternalProviderUpdateComplete(
const extensions::ExternalProviderInterface* provider,
- const ScopedVector<extensions::ExternalInstallInfoUpdateUrl>&
+ const std::vector<
+ std::unique_ptr<extensions::ExternalInstallInfoUpdateUrl>>&
external_update_url_extensions,
- const ScopedVector<extensions::ExternalInstallInfoFile>&
+ const std::vector<std::unique_ptr<extensions::ExternalInstallInfoFile>>&
external_file_extensions,
const std::set<std::string>& removed_extensions) override;
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index 604796b..57e06b16 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -466,8 +466,10 @@
void OnExternalProviderUpdateComplete(
const ExternalProviderInterface* provider,
- const ScopedVector<ExternalInstallInfoUpdateUrl>& update_url_extensions,
- const ScopedVector<ExternalInstallInfoFile>& file_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>&
+ update_url_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoFile>>&
+ file_extensions,
const std::set<std::string>& removed_extensions) override {
ADD_FAILURE() << "MockProviderVisitor does not provide incremental updates,"
" use MockUpdateProviderVisitor instead.";
@@ -535,14 +537,16 @@
void OnExternalProviderUpdateComplete(
const ExternalProviderInterface* provider,
- const ScopedVector<ExternalInstallInfoUpdateUrl>& update_url_extensions,
- const ScopedVector<ExternalInstallInfoFile>& file_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>&
+ update_url_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoFile>>&
+ file_extensions,
const std::set<std::string>& removed_extensions) override {
- for (auto* extension_info : update_url_extensions)
+ for (const auto& extension_info : update_url_extensions)
update_url_extension_ids_.insert(extension_info->extension_id);
EXPECT_EQ(update_url_extension_ids_.size(), update_url_extensions.size());
- for (auto* extension_info : file_extensions)
+ for (const auto& extension_info : file_extensions)
file_extension_ids_.insert(extension_info->extension_id);
EXPECT_EQ(file_extension_ids_.size(), file_extensions.size());
diff --git a/chrome/browser/extensions/external_policy_loader_unittest.cc b/chrome/browser/extensions/external_policy_loader_unittest.cc
index 9aaae08..540ef99 100644
--- a/chrome/browser/extensions/external_policy_loader_unittest.cc
+++ b/chrome/browser/extensions/external_policy_loader_unittest.cc
@@ -103,8 +103,10 @@
void OnExternalProviderUpdateComplete(
const ExternalProviderInterface* provider,
- const ScopedVector<ExternalInstallInfoUpdateUrl>& update_url_extensions,
- const ScopedVector<ExternalInstallInfoFile>& file_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>&
+ update_url_extensions,
+ const std::vector<std::unique_ptr<ExternalInstallInfoFile>>&
+ file_extensions,
const std::set<std::string>& removed_extensions) override {
ADD_FAILURE() << "Only win registry provider is expected to call this.";
}
diff --git a/chrome/browser/extensions/external_provider_impl.cc b/chrome/browser/extensions/external_provider_impl.cc
index fe47198..750228c1 100644
--- a/chrome/browser/extensions/external_provider_impl.cc
+++ b/chrome/browser/extensions/external_provider_impl.cc
@@ -122,15 +122,17 @@
prefs_.reset(prefs);
ready_ = true; // Queries for extensions are allowed from this point.
- ScopedVector<ExternalInstallInfoUpdateUrl> external_update_url_extensions;
- ScopedVector<ExternalInstallInfoFile> external_file_extensions;
+ std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>
+ external_update_url_extensions;
+ std::vector<std::unique_ptr<ExternalInstallInfoFile>>
+ external_file_extensions;
RetrieveExtensionsFromPrefs(&external_update_url_extensions,
&external_file_extensions);
- for (auto* extension : external_update_url_extensions)
+ for (const auto& extension : external_update_url_extensions)
service_->OnExternalExtensionUpdateUrlFound(*extension, true);
- for (auto* extension : external_file_extensions)
+ for (const auto& extension : external_file_extensions)
service_->OnExternalExtensionFileFound(*extension);
service_->OnExternalProviderReady(this);
@@ -159,8 +161,10 @@
prefs_.reset(prefs);
- ScopedVector<ExternalInstallInfoUpdateUrl> external_update_url_extensions;
- ScopedVector<ExternalInstallInfoFile> external_file_extensions;
+ std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>
+ external_update_url_extensions;
+ std::vector<std::unique_ptr<ExternalInstallInfoFile>>
+ external_file_extensions;
RetrieveExtensionsFromPrefs(&external_update_url_extensions,
&external_file_extensions);
@@ -173,8 +177,10 @@
}
void ExternalProviderImpl::RetrieveExtensionsFromPrefs(
- ScopedVector<ExternalInstallInfoUpdateUrl>* external_update_url_extensions,
- ScopedVector<ExternalInstallInfoFile>* external_file_extensions) {
+ std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>*
+ external_update_url_extensions,
+ std::vector<std::unique_ptr<ExternalInstallInfoFile>>*
+ external_file_extensions) {
// Set of unsupported extensions that need to be deleted from prefs_.
std::set<std::string> unsupported_extensions;
@@ -351,9 +357,10 @@
<< external_version << "\".";
continue;
}
- external_file_extensions->push_back(new ExternalInstallInfoFile(
- extension_id, std::move(version), path, crx_location_, creation_flags,
- auto_acknowledge_, install_immediately_));
+ external_file_extensions->push_back(
+ base::MakeUnique<ExternalInstallInfoFile>(
+ extension_id, std::move(version), path, crx_location_,
+ creation_flags, auto_acknowledge_, install_immediately_));
} else { // if (has_external_update_url)
CHECK(has_external_update_url); // Checking of keys above ensures this.
if (download_location_ == Manifest::INVALID_LOCATION) {
@@ -370,7 +377,7 @@
continue;
}
external_update_url_extensions->push_back(
- new ExternalInstallInfoUpdateUrl(
+ base::MakeUnique<ExternalInstallInfoUpdateUrl>(
extension_id, install_parameter, std::move(update_url),
download_location_, creation_flags, auto_acknowledge_));
}
diff --git a/chrome/browser/extensions/external_provider_impl.h b/chrome/browser/extensions/external_provider_impl.h
index d1bb516..10d92f2a1 100644
--- a/chrome/browser/extensions/external_provider_impl.h
+++ b/chrome/browser/extensions/external_provider_impl.h
@@ -10,7 +10,6 @@
#include "base/macros.h"
#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_vector.h"
#include "chrome/browser/extensions/external_loader.h"
#include "extensions/browser/external_provider_interface.h"
#include "extensions/common/manifest.h"
@@ -104,9 +103,10 @@
// Retrieves the extensions that were found in this provider.
void RetrieveExtensionsFromPrefs(
- ScopedVector<ExternalInstallInfoUpdateUrl>*
+ std::vector<std::unique_ptr<ExternalInstallInfoUpdateUrl>>*
external_update_url_extensions,
- ScopedVector<ExternalInstallInfoFile>* external_file_extensions);
+ std::vector<std::unique_ptr<ExternalInstallInfoFile>>*
+ external_file_extensions);
// Location for external extensions that are provided by this provider from
// local crx files.
diff --git a/chrome/browser/extensions/window_open_apitest.cc b/chrome/browser/extensions/window_open_apitest.cc
index 6608957f..fd74795 100644
--- a/chrome/browser/extensions/window_open_apitest.cc
+++ b/chrome/browser/extensions/window_open_apitest.cc
@@ -4,7 +4,6 @@
#include <stddef.h>
-#include "base/memory/scoped_vector.h"
#include "base/path_service.h"
#include "base/strings/stringprintf.h"
#include "build/build_config.h"