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 @@ ...@@ -4,6 +4,8 @@
#include "chrome/browser/task_manager/providers/web_contents/background_contents_tag.h" #include "chrome/browser/task_manager/providers/web_contents/background_contents_tag.h"
#include <memory>
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/background/background_contents.h" #include "chrome/browser/background/background_contents.h"
#include "chrome/browser/background/background_contents_service.h" #include "chrome/browser/background/background_contents_service.h"
...@@ -17,7 +19,7 @@ ...@@ -17,7 +19,7 @@
namespace task_manager { namespace task_manager {
BackgroundContentsTask* BackgroundContentsTag::CreateTask( std::unique_ptr<RendererTask> BackgroundContentsTag::CreateTask(
WebContentsTaskProvider*) const { WebContentsTaskProvider*) const {
// Try to lookup the application name from the parent extension (if any). // Try to lookup the application name from the parent extension (if any).
Profile* profile = Profile::FromBrowserContext( Profile* profile = Profile::FromBrowserContext(
...@@ -34,7 +36,8 @@ BackgroundContentsTask* BackgroundContentsTag::CreateTask( ...@@ -34,7 +36,8 @@ BackgroundContentsTask* BackgroundContentsTag::CreateTask(
if (extension) if (extension)
application_name = base::UTF8ToUTF16(extension->name()); application_name = base::UTF8ToUTF16(extension->name());
return new BackgroundContentsTask(application_name, background_contents_); return std::make_unique<BackgroundContentsTask>(application_name,
background_contents_);
} }
BackgroundContentsTag::BackgroundContentsTag( BackgroundContentsTag::BackgroundContentsTag(
......
...@@ -20,7 +20,8 @@ class BackgroundContentsTag : public WebContentsTag { ...@@ -20,7 +20,8 @@ class BackgroundContentsTag : public WebContentsTag {
~BackgroundContentsTag() override; ~BackgroundContentsTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
BackgroundContentsTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/devtools_tag.h" #include "chrome/browser/task_manager/providers/web_contents/devtools_tag.h"
#include <memory>
namespace task_manager { namespace task_manager {
DevToolsTask* DevToolsTag::CreateTask(WebContentsTaskProvider*) const { std::unique_ptr<RendererTask> DevToolsTag::CreateTask(
return new DevToolsTask(web_contents()); WebContentsTaskProvider*) const {
return std::make_unique<DevToolsTask>(web_contents());
} }
DevToolsTag::DevToolsTag(content::WebContents* web_contents) DevToolsTag::DevToolsTag(content::WebContents* web_contents)
......
...@@ -17,7 +17,8 @@ class DevToolsTag : public WebContentsTag { ...@@ -17,7 +17,8 @@ class DevToolsTag : public WebContentsTag {
~DevToolsTag() override; ~DevToolsTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
DevToolsTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "chrome/browser/task_manager/providers/web_contents/extension_tag.h" #include "chrome/browser/task_manager/providers/web_contents/extension_tag.h"
#include <memory>
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "extensions/buildflags/buildflags.h" #include "extensions/buildflags/buildflags.h"
...@@ -13,7 +15,8 @@ ...@@ -13,7 +15,8 @@
namespace task_manager { 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 // Upon being asked to create a task, it means that the site instance is ready
// and connected, and the render frames have been initialized. // and connected, and the render frames have been initialized.
// It's OK if the following returns nullptr, ExtensionTask will then get the // It's OK if the following returns nullptr, ExtensionTask will then get the
...@@ -22,7 +25,7 @@ ExtensionTask* ExtensionTag::CreateTask(WebContentsTaskProvider*) const { ...@@ -22,7 +25,7 @@ ExtensionTask* ExtensionTag::CreateTask(WebContentsTaskProvider*) const {
extensions::ProcessManager::Get(web_contents()->GetBrowserContext())-> extensions::ProcessManager::Get(web_contents()->GetBrowserContext())->
GetExtensionForWebContents(web_contents()); 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, ExtensionTag::ExtensionTag(content::WebContents* web_contents,
......
...@@ -17,7 +17,8 @@ class ExtensionTag : public WebContentsTag { ...@@ -17,7 +17,8 @@ class ExtensionTag : public WebContentsTag {
~ExtensionTag() override; ~ExtensionTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
ExtensionTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/guest_tag.h" #include "chrome/browser/task_manager/providers/web_contents/guest_tag.h"
#include <memory>
namespace task_manager { namespace task_manager {
GuestTask* GuestTag::CreateTask(WebContentsTaskProvider*) const { std::unique_ptr<RendererTask> GuestTag::CreateTask(
return new GuestTask(web_contents()); WebContentsTaskProvider*) const {
return std::make_unique<GuestTask>(web_contents());
} }
GuestTag::GuestTag(content::WebContents* web_contents) GuestTag::GuestTag(content::WebContents* web_contents)
......
...@@ -18,7 +18,8 @@ class GuestTag : public WebContentsTag { ...@@ -18,7 +18,8 @@ class GuestTag : public WebContentsTag {
~GuestTag() override; ~GuestTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
GuestTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,11 +4,13 @@ ...@@ -4,11 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/portal_tag.h" #include "chrome/browser/task_manager/providers/web_contents/portal_tag.h"
#include <memory>
namespace task_manager { namespace task_manager {
PortalTask* PortalTag::CreateTask( std::unique_ptr<RendererTask> PortalTag::CreateTask(
WebContentsTaskProvider* task_provider) const { 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) PortalTag::PortalTag(content::WebContents* web_contents)
......
...@@ -19,7 +19,8 @@ class PortalTag : public WebContentsTag { ...@@ -19,7 +19,8 @@ class PortalTag : public WebContentsTag {
~PortalTag() override; ~PortalTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
PortalTask* CreateTask(WebContentsTaskProvider* task_provider) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider* task_provider) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/prerender_tag.h" #include "chrome/browser/task_manager/providers/web_contents/prerender_tag.h"
#include <memory>
namespace task_manager { namespace task_manager {
PrerenderTask* PrerenderTag::CreateTask(WebContentsTaskProvider*) const { std::unique_ptr<RendererTask> PrerenderTag::CreateTask(
return new PrerenderTask(web_contents()); WebContentsTaskProvider*) const {
return std::make_unique<PrerenderTask>(web_contents());
} }
PrerenderTag::PrerenderTag(content::WebContents* web_contents) PrerenderTag::PrerenderTag(content::WebContents* web_contents)
......
...@@ -18,7 +18,8 @@ class PrerenderTag : public WebContentsTag { ...@@ -18,7 +18,8 @@ class PrerenderTag : public WebContentsTag {
~PrerenderTag() override; ~PrerenderTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
PrerenderTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/printing_tag.h" #include "chrome/browser/task_manager/providers/web_contents/printing_tag.h"
#include <memory>
namespace task_manager { namespace task_manager {
PrintingTask* PrintingTag::CreateTask(WebContentsTaskProvider*) const { std::unique_ptr<RendererTask> PrintingTag::CreateTask(
return new PrintingTask(web_contents()); WebContentsTaskProvider*) const {
return std::make_unique<PrintingTask>(web_contents());
} }
PrintingTag::PrintingTag(content::WebContents* web_contents) PrintingTag::PrintingTag(content::WebContents* web_contents)
......
...@@ -18,7 +18,8 @@ class PrintingTag : public WebContentsTag { ...@@ -18,7 +18,8 @@ class PrintingTag : public WebContentsTag {
~PrintingTag() override; ~PrintingTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
PrintingTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -4,10 +4,13 @@ ...@@ -4,10 +4,13 @@
#include "chrome/browser/task_manager/providers/web_contents/tab_contents_tag.h" #include "chrome/browser/task_manager/providers/web_contents/tab_contents_tag.h"
#include <memory>
namespace task_manager { namespace task_manager {
TabContentsTask* TabContentsTag::CreateTask(WebContentsTaskProvider*) const { std::unique_ptr<RendererTask> TabContentsTag::CreateTask(
return new TabContentsTask(web_contents()); WebContentsTaskProvider*) const {
return std::make_unique<TabContentsTask>(web_contents());
} }
TabContentsTag::TabContentsTag(content::WebContents* web_contents) TabContentsTag::TabContentsTag(content::WebContents* web_contents)
......
...@@ -17,7 +17,8 @@ class TabContentsTag : public WebContentsTag { ...@@ -17,7 +17,8 @@ class TabContentsTag : public WebContentsTag {
~TabContentsTag() override; ~TabContentsTag() override;
// task_manager::WebContentsTag: // task_manager::WebContentsTag:
TabContentsTask* CreateTask(WebContentsTaskProvider*) const override; std::unique_ptr<RendererTask> CreateTask(
WebContentsTaskProvider*) const override;
private: private:
friend class WebContentsTags; friend class WebContentsTags;
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_TASK_MANAGER_PROVIDERS_WEB_CONTENTS_WEB_CONTENTS_TAG_H_ #ifndef CHROME_BROWSER_TASK_MANAGER_PROVIDERS_WEB_CONTENTS_WEB_CONTENTS_TAG_H_
#define 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/macros.h"
#include "base/supports_user_data.h" #include "base/supports_user_data.h"
...@@ -36,11 +38,9 @@ class WebContentsTag : public base::SupportsUserData::Data { ...@@ -36,11 +38,9 @@ class WebContentsTag : public base::SupportsUserData::Data {
// The concrete Tags know how to instantiate a |RendererTask| that corresponds // The concrete Tags know how to instantiate a |RendererTask| that corresponds
// to the owning WebContents and Service. This will be used by the // to the owning WebContents and Service. This will be used by the
// WebContentsTaskProvider to create the appropriate Tasks. // WebContentsTaskProvider to create the appropriate Tasks. |task_provicer| is
// // provided in case the task needs it for construction.
// The returned |RendererTask| is owned by the caller (in this case it will be virtual std::unique_ptr<RendererTask> CreateTask(
// the provider, |task_provider|).
virtual RendererTask* CreateTask(
WebContentsTaskProvider* task_provider) const = 0; WebContentsTaskProvider* task_provider) const = 0;
content::WebContents* web_contents() const { return web_contents_; } content::WebContents* web_contents() const { return web_contents_; }
......
...@@ -17,7 +17,6 @@ class WebContents; ...@@ -17,7 +17,6 @@ class WebContents;
namespace task_manager { namespace task_manager {
class WebContentsEntry;
class WebContentsTag; class WebContentsTag;
// Defines a provider to provide the renderer tasks that are associated with // Defines a provider to provide the renderer tasks that are associated with
...@@ -45,7 +44,7 @@ class WebContentsTaskProvider : public TaskProvider { ...@@ -45,7 +44,7 @@ class WebContentsTaskProvider : public TaskProvider {
Task* GetTaskOfFrame(content::RenderFrameHost* frame); Task* GetTaskOfFrame(content::RenderFrameHost* frame);
private: private:
friend class WebContentsEntry; class WebContentsEntry;
// task_manager::TaskProvider: // task_manager::TaskProvider:
void StartUpdating() override; void StartUpdating() override;
...@@ -62,7 +61,7 @@ class WebContentsTaskProvider : public TaskProvider { ...@@ -62,7 +61,7 @@ class WebContentsTaskProvider : public TaskProvider {
// True if this provider is listening to WebContentsTags and updating its // True if this provider is listening to WebContentsTags and updating its
// observers, false otherwise. // observers, false otherwise.
bool is_updating_; bool is_updating_ = false;
DISALLOW_COPY_AND_ASSIGN(WebContentsTaskProvider); 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