Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2949)

Unified Diff: chrome/browser/extensions/api/tab_capture/offscreen_tab.cc

Issue 2310683002: Remove most ScopedVector usage from c/b/extensions. (Closed)
Patch Set: remove scoped_vector includes Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/tab_capture/offscreen_tab.cc
diff --git a/chrome/browser/extensions/api/tab_capture/offscreen_tab.cc b/chrome/browser/extensions/api/tab_capture/offscreen_tab.cc
index d7e26772b4f17f67bb2c13209f3559be533ac4f9..f50fdf9c3cb89cd7087e96e447cd697affb933df 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 @@ OffscreenTab* OffscreenTabsOwner::OpenNewTab(
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)

Powered by Google App Engine
This is Rietveld 408576698