Commit 9419eeed authored by Avi Drissman's avatar Avi Drissman Committed by Commit Bot

Remove raw pointers from WebContentsTags and Tasks

task_manager::WebContentsTag::CreateTask returns ownership in a
raw pointer. Fix that. WebContentsTaskProvider::WebContentsEntry
then has to juggle those raw pointers. Fix that.

Bug: none
Change-Id: Ie19f3f67365b8f1ff22079949a6148f058d7ffd4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2361204
Commit-Queue: Avi Drissman <avi@chromium.org>
Auto-Submit: Avi Drissman <avi@chromium.org>
Reviewed-by: default avatarAhmed Fakhry <afakhry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799819}
parent 283a7728
......@@ -4,6 +4,8 @@
#include "chrome/browser/task_manager/providers/web_contents/background_contents_tag.h"
#include <memory>
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/background/background_contents.h"
#include "chrome/browser/background/background_contents_service.h"
......@@ -17,7 +19,7 @@
namespace task_manager {
BackgroundContentsTask* BackgroundContentsTag::CreateTask(
std::unique_ptr<RendererTask> BackgroundContentsTag::CreateTask(
WebContentsTaskProvider*) const {
// Try to lookup the application name from the parent extension (if any).
Profile* profile = Profile::FromBrowserContext(
......@@ -34,7 +36,8 @@ BackgroundContentsTask* BackgroundContentsTag::CreateTask(
if (extension)
application_name = base::UTF8ToUTF16(extension->name());
return new BackgroundContentsTask(application_name, background_contents_);
return std::make_unique<BackgroundContentsTask>(application_name,
background_contents_);
}
BackgroundContentsTag::BackgroundContentsTag(
......
......@@ -20,7 +20,8 @@ class BackgroundContentsTag : public WebContentsTag {
~BackgroundContentsTag() override;
// task_manager::WebContentsTag:
BackgroundContentsTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/devtools_tag.h"
#include <memory>
namespace task_manager {
DevToolsTask* DevToolsTag::CreateTask(WebContentsTaskProvider*) const {
return new DevToolsTask(web_contents());
std::unique_ptr<RendererTask> DevToolsTag::CreateTask(
WebContentsTaskProvider*) const {
return std::make_unique<DevToolsTask>(web_contents());
}
DevToolsTag::DevToolsTag(content::WebContents* web_contents)
......
......@@ -17,7 +17,8 @@ class DevToolsTag : public WebContentsTag {
~DevToolsTag() override;
// task_manager::WebContentsTag:
DevToolsTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -4,6 +4,8 @@
#include "chrome/browser/task_manager/providers/web_contents/extension_tag.h"
#include <memory>
#include "content/public/browser/web_contents.h"
#include "extensions/buildflags/buildflags.h"
......@@ -13,7 +15,8 @@
namespace task_manager {
ExtensionTask* ExtensionTag::CreateTask(WebContentsTaskProvider*) const {
std::unique_ptr<RendererTask> ExtensionTag::CreateTask(
WebContentsTaskProvider*) const {
// Upon being asked to create a task, it means that the site instance is ready
// and connected, and the render frames have been initialized.
// It's OK if the following returns nullptr, ExtensionTask will then get the
......@@ -22,7 +25,7 @@ ExtensionTask* ExtensionTag::CreateTask(WebContentsTaskProvider*) const {
extensions::ProcessManager::Get(web_contents()->GetBrowserContext())->
GetExtensionForWebContents(web_contents());
return new ExtensionTask(web_contents(), extension, view_type_);
return std::make_unique<ExtensionTask>(web_contents(), extension, view_type_);
}
ExtensionTag::ExtensionTag(content::WebContents* web_contents,
......
......@@ -17,7 +17,8 @@ class ExtensionTag : public WebContentsTag {
~ExtensionTag() override;
// task_manager::WebContentsTag:
ExtensionTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/guest_tag.h"
#include <memory>
namespace task_manager {
GuestTask* GuestTag::CreateTask(WebContentsTaskProvider*) const {
return new GuestTask(web_contents());
std::unique_ptr<RendererTask> GuestTag::CreateTask(
WebContentsTaskProvider*) const {
return std::make_unique<GuestTask>(web_contents());
}
GuestTag::GuestTag(content::WebContents* web_contents)
......
......@@ -18,7 +18,8 @@ class GuestTag : public WebContentsTag {
~GuestTag() override;
// task_manager::WebContentsTag:
GuestTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -4,11 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/portal_tag.h"
#include <memory>
namespace task_manager {
PortalTask* PortalTag::CreateTask(
std::unique_ptr<RendererTask> PortalTag::CreateTask(
WebContentsTaskProvider* task_provider) const {
return new PortalTask(web_contents(), task_provider);
return std::make_unique<PortalTask>(web_contents(), task_provider);
}
PortalTag::PortalTag(content::WebContents* web_contents)
......
......@@ -19,7 +19,8 @@ class PortalTag : public WebContentsTag {
~PortalTag() override;
// task_manager::WebContentsTag:
PortalTask* CreateTask(WebContentsTaskProvider* task_provider) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider* task_provider) const override;
private:
friend class WebContentsTags;
......
......@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/prerender_tag.h"
#include <memory>
namespace task_manager {
PrerenderTask* PrerenderTag::CreateTask(WebContentsTaskProvider*) const {
return new PrerenderTask(web_contents());
std::unique_ptr<RendererTask> PrerenderTag::CreateTask(
WebContentsTaskProvider*) const {
return std::make_unique<PrerenderTask>(web_contents());
}
PrerenderTag::PrerenderTag(content::WebContents* web_contents)
......
......@@ -18,7 +18,8 @@ class PrerenderTag : public WebContentsTag {
~PrerenderTag() override;
// task_manager::WebContentsTag:
PrerenderTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/printing_tag.h"
#include <memory>
namespace task_manager {
PrintingTask* PrintingTag::CreateTask(WebContentsTaskProvider*) const {
return new PrintingTask(web_contents());
std::unique_ptr<RendererTask> PrintingTag::CreateTask(
WebContentsTaskProvider*) const {
return std::make_unique<PrintingTask>(web_contents());
}
PrintingTag::PrintingTag(content::WebContents* web_contents)
......
......@@ -18,7 +18,8 @@ class PrintingTag : public WebContentsTag {
~PrintingTag() override;
// task_manager::WebContentsTag:
PrintingTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/tab_contents_tag.h"
#include <memory>
namespace task_manager {
TabContentsTask* TabContentsTag::CreateTask(WebContentsTaskProvider*) const {
return new TabContentsTask(web_contents());
std::unique_ptr<RendererTask> TabContentsTag::CreateTask(
WebContentsTaskProvider*) const {
return std::make_unique<TabContentsTask>(web_contents());
}
TabContentsTag::TabContentsTag(content::WebContents* web_contents)
......
......@@ -17,7 +17,8 @@ class TabContentsTag : public WebContentsTag {
~TabContentsTag() override;
// task_manager::WebContentsTag:
TabContentsTask* CreateTask(WebContentsTaskProvider*) const override;
std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private:
friend class WebContentsTags;
......
......@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_TASK_MANAGER_PROVIDERS_WEB_CONTENTS_WEB_CONTENTS_TAG_H_
#define CHROME_BROWSER_TASK_MANAGER_PROVIDERS_WEB_CONTENTS_WEB_CONTENTS_TAG_H_
#include <memory>
#include "base/macros.h"
#include "base/supports_user_data.h"
......@@ -36,11 +38,9 @@ class WebContentsTag : public base::SupportsUserData::Data {
// The concrete Tags know how to instantiate a |RendererTask| that corresponds
// to the owning WebContents and Service. This will be used by the
// WebContentsTaskProvider to create the appropriate Tasks.
//
// The returned |RendererTask| is owned by the caller (in this case it will be
// the provider, |task_provider|).
virtual RendererTask* CreateTask(
// WebContentsTaskProvider to create the appropriate Tasks. |task_provicer| is
// provided in case the task needs it for construction.
virtual std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider* task_provider) const = 0;
content::WebContents* web_contents() const { return web_contents_; }
......
......@@ -17,7 +17,6 @@ class WebContents;
namespace task_manager {
class WebContentsEntry;
class WebContentsTag;
// Defines a provider to provide the renderer tasks that are associated with
......@@ -45,7 +44,7 @@ class WebContentsTaskProvider : public TaskProvider {
Task* GetTaskOfFrame(content::RenderFrameHost* frame);
private:
friend class WebContentsEntry;
class WebContentsEntry;
// task_manager::TaskProvider:
void StartUpdating() override;
......@@ -62,7 +61,7 @@ class WebContentsTaskProvider : public TaskProvider {
// True if this provider is listening to WebContentsTags and updating its
// observers, false otherwise.
bool is_updating_;
bool is_updating_ = false;
DISALLOW_COPY_AND_ASSIGN(WebContentsTaskProvider);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment