Commit ef337163 authored by Lei Zhang's avatar Lei Zhang Committed by Commit Bot

Make WebUIProvider::NewWebUI() return a unique_ptr.

Fix overrides and remove a bunch of calls to new.

Change-Id: Icac6516cae60dfcde967540022262088dc230f74
Reviewed-on: https://chromium-review.googlesource.com/1188040Reviewed-by: default avatarTommy Li <tommycli@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585921}
parent 617db975
...@@ -300,7 +300,7 @@ DevToolsWindowBeforeUnloadObserver::DevToolsWindowBeforeUnloadObserver( ...@@ -300,7 +300,7 @@ DevToolsWindowBeforeUnloadObserver::DevToolsWindowBeforeUnloadObserver(
void DevToolsWindowBeforeUnloadObserver::Wait() { void DevToolsWindowBeforeUnloadObserver::Wait() {
if (m_fired) if (m_fired)
return; return;
message_loop_runner_ = new content::MessageLoopRunner; message_loop_runner_ = base::MakeRefCounted<content::MessageLoopRunner>();
message_loop_runner_->Run(); message_loop_runner_->Run();
} }
...@@ -339,8 +339,7 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest { ...@@ -339,8 +339,7 @@ class DevToolsBeforeUnloadTest: public DevToolsSanityTest {
base::Callback<void(void)> close_method, base::Callback<void(void)> close_method,
bool wait_for_browser_close = true) { bool wait_for_browser_close = true) {
OpenDevToolsWindow(kDebuggerTestPage, is_docked); OpenDevToolsWindow(kDebuggerTestPage, is_docked);
scoped_refptr<content::MessageLoopRunner> runner = auto runner = base::MakeRefCounted<content::MessageLoopRunner>();
new content::MessageLoopRunner;
DevToolsWindowTesting::Get(window_)-> DevToolsWindowTesting::Get(window_)->
SetCloseCallback(runner->QuitClosure()); SetCloseCallback(runner->QuitClosure());
InjectBeforeUnloadListener(main_web_contents()); InjectBeforeUnloadListener(main_web_contents());
...@@ -728,8 +727,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, ...@@ -728,8 +727,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
DevToolsWindow* devtools_window = OpenDevToolWindowOnWebContents( DevToolsWindow* devtools_window = OpenDevToolWindowOnWebContents(
GetInspectedTab(), false); GetInspectedTab(), false);
scoped_refptr<content::MessageLoopRunner> runner = auto runner = base::MakeRefCounted<content::MessageLoopRunner>();
new content::MessageLoopRunner;
DevToolsWindowTesting::Get(devtools_window)->SetCloseCallback( DevToolsWindowTesting::Get(devtools_window)->SetCloseCallback(
runner->QuitClosure()); runner->QuitClosure());
...@@ -762,19 +760,19 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, ...@@ -762,19 +760,19 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
LoadTestPage(kDebuggerTestPage); LoadTestPage(kDebuggerTestPage);
std::vector<DevToolsWindow*> windows; std::vector<DevToolsWindow*> windows;
std::vector<content::WindowedNotificationObserver*> close_observers; std::vector<std::unique_ptr<content::WindowedNotificationObserver>>
close_observers;
content::WebContents* inspected_web_contents = GetInspectedTab(); content::WebContents* inspected_web_contents = GetInspectedTab();
for (int i = 0; i < 3; ++i) { for (int i = 0; i < 3; ++i) {
DevToolsWindow* devtools_window = OpenDevToolWindowOnWebContents( DevToolsWindow* devtools_window = OpenDevToolWindowOnWebContents(
inspected_web_contents, i == 0); inspected_web_contents, i == 0);
windows.push_back(devtools_window); windows.push_back(devtools_window);
content::WindowedNotificationObserver* close_observer = close_observers.push_back(
new content::WindowedNotificationObserver( std::make_unique<content::WindowedNotificationObserver>(
content::NOTIFICATION_WEB_CONTENTS_DESTROYED, content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
content::Source<content::WebContents>( content::Source<content::WebContents>(
DevToolsWindowTesting::Get(devtools_window)-> DevToolsWindowTesting::Get(devtools_window)
main_web_contents())); ->main_web_contents())));
close_observers.push_back(close_observer);
inspected_web_contents = inspected_web_contents =
DevToolsWindowTesting::Get(devtools_window)->main_web_contents(); DevToolsWindowTesting::Get(devtools_window)->main_web_contents();
} }
...@@ -812,10 +810,8 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest, ...@@ -812,10 +810,8 @@ IN_PROC_BROWSER_TEST_F(DevToolsBeforeUnloadTest,
AcceptModalDialog(); AcceptModalDialog();
close_observer.Wait(); close_observer.Wait();
} }
for (size_t i = 0; i < close_observers.size(); ++i) { for (auto& close_observer : close_observers)
close_observers[i]->Wait(); close_observer->Wait();
delete close_observers[i];
}
} }
// Tests scripts panel showing. // Tests scripts panel showing.
...@@ -1362,8 +1358,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest, ...@@ -1362,8 +1358,7 @@ IN_PROC_BROWSER_TEST_F(DevToolsExtensionTest,
DevToolsExtensionSecurityPolicyGrants) { DevToolsExtensionSecurityPolicyGrants) {
ASSERT_TRUE(embedded_test_server()->Start()); ASSERT_TRUE(embedded_test_server()->Start());
std::unique_ptr<extensions::TestExtensionDir> dir( auto dir = std::make_unique<extensions::TestExtensionDir>();
new extensions::TestExtensionDir());
extensions::DictionaryBuilder manifest; extensions::DictionaryBuilder manifest;
dir->WriteManifest(extensions::DictionaryBuilder() dir->WriteManifest(extensions::DictionaryBuilder()
...@@ -1752,7 +1747,7 @@ class DevToolsAutoOpenerTest : public DevToolsSanityTest { ...@@ -1752,7 +1747,7 @@ class DevToolsAutoOpenerTest : public DevToolsSanityTest {
public: public:
void SetUpCommandLine(base::CommandLine* command_line) override { void SetUpCommandLine(base::CommandLine* command_line) override {
command_line->AppendSwitch(switches::kAutoOpenDevToolsForTabs); command_line->AppendSwitch(switches::kAutoOpenDevToolsForTabs);
observer_.reset(new DevToolsWindowCreationObserver()); observer_ = std::make_unique<DevToolsWindowCreationObserver>();
} }
protected: protected:
std::unique_ptr<DevToolsWindowCreationObserver> observer_; std::unique_ptr<DevToolsWindowCreationObserver> observer_;
...@@ -2097,12 +2092,13 @@ class MockWebUIProvider ...@@ -2097,12 +2092,13 @@ class MockWebUIProvider
public: public:
MockWebUIProvider(const std::string& source, const std::string& content) MockWebUIProvider(const std::string& source, const std::string& content)
: source_(source), content_(content) {} : source_(source), content_(content) {}
~MockWebUIProvider() override = default;
content::WebUIController* NewWebUI(content::WebUI* web_ui, std::unique_ptr<content::WebUIController> NewWebUI(content::WebUI* web_ui,
const GURL& url) override { const GURL& url) override {
content::URLDataSource::Add(Profile::FromWebUI(web_ui), content::URLDataSource::Add(Profile::FromWebUI(web_ui),
new StaticURLDataSource(source_, content_)); new StaticURLDataSource(source_, content_));
return new content::WebUIController(web_ui); return std::make_unique<content::WebUIController>(web_ui);
} }
private: private:
......
...@@ -182,10 +182,9 @@ class TestingPeopleHandler : public PeopleHandler { ...@@ -182,10 +182,9 @@ class TestingPeopleHandler : public PeopleHandler {
class TestWebUIProvider class TestWebUIProvider
: public TestChromeWebUIControllerFactory::WebUIProvider { : public TestChromeWebUIControllerFactory::WebUIProvider {
public: public:
content::WebUIController* NewWebUI(content::WebUI* web_ui, std::unique_ptr<content::WebUIController> NewWebUI(content::WebUI* web_ui,
const GURL& url) override { const GURL& url) override {
content::WebUIController* controller = new content::WebUIController(web_ui); return std::make_unique<content::WebUIController>(web_ui);
return controller;
} }
}; };
......
...@@ -112,7 +112,7 @@ ContentInfo NavigateAndGetInfo( ...@@ -112,7 +112,7 @@ ContentInfo NavigateAndGetInfo(
// Returns a new WebUI object for the WebContents from |arg0|. // Returns a new WebUI object for the WebContents from |arg0|.
ACTION(ReturnNewWebUI) { ACTION(ReturnNewWebUI) {
return new content::WebUIController(arg0); return std::make_unique<content::WebUIController>(arg0);
} }
GURL GetSigninPromoURL() { GURL GetSigninPromoURL() {
...@@ -126,8 +126,9 @@ GURL GetSigninPromoURL() { ...@@ -126,8 +126,9 @@ GURL GetSigninPromoURL() {
class FooWebUIProvider class FooWebUIProvider
: public TestChromeWebUIControllerFactory::WebUIProvider { : public TestChromeWebUIControllerFactory::WebUIProvider {
public: public:
MOCK_METHOD2(NewWebUI, content::WebUIController*(content::WebUI* web_ui, MOCK_METHOD2(NewWebUI,
const GURL& url)); std::unique_ptr<content::WebUIController>(content::WebUI* web_ui,
const GURL& url));
}; };
const char kFooWebUIURL[] = "chrome://foo/"; const char kFooWebUIURL[] = "chrome://foo/";
...@@ -140,8 +141,7 @@ bool AddToSet(std::set<content::WebContents*>* set, ...@@ -140,8 +141,7 @@ bool AddToSet(std::set<content::WebContents*>* set,
std::unique_ptr<net::test_server::HttpResponse> EmptyHtmlResponseHandler( std::unique_ptr<net::test_server::HttpResponse> EmptyHtmlResponseHandler(
const net::test_server::HttpRequest& request) { const net::test_server::HttpRequest& request) {
std::unique_ptr<net::test_server::BasicHttpResponse> http_response( auto http_response = std::make_unique<net::test_server::BasicHttpResponse>();
new net::test_server::BasicHttpResponse());
http_response->set_code(net::HTTP_OK); http_response->set_code(net::HTTP_OK);
http_response->set_content_type("text/html"); http_response->set_content_type("text/html");
http_response->set_content( http_response->set_content(
...@@ -882,7 +882,7 @@ class InlineLoginUISafeIframeBrowserTest : public InProcessBrowserTest { ...@@ -882,7 +882,7 @@ class InlineLoginUISafeIframeBrowserTest : public InProcessBrowserTest {
content::WebUIControllerFactory::UnregisterFactoryForTesting( content::WebUIControllerFactory::UnregisterFactoryForTesting(
ChromeWebUIControllerFactory::GetInstance()); ChromeWebUIControllerFactory::GetInstance());
test_factory_.reset(new TestChromeWebUIControllerFactory); test_factory_ = std::make_unique<TestChromeWebUIControllerFactory>();
content::WebUIControllerFactory::RegisterFactory(test_factory_.get()); content::WebUIControllerFactory::RegisterFactory(test_factory_.get());
test_factory_->AddFactoryOverride( test_factory_->AddFactoryOverride(
GURL(kFooWebUIURL).host(), &foo_provider_); GURL(kFooWebUIURL).host(), &foo_provider_);
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/test/base/test_chrome_web_ui_controller_factory.h" #include "chrome/test/base/test_chrome_web_ui_controller_factory.h"
#include "base/memory/ptr_util.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui_controller.h" #include "content/public/browser/web_ui_controller.h"
...@@ -48,7 +47,7 @@ TestChromeWebUIControllerFactory::CreateWebUIControllerForURL( ...@@ -48,7 +47,7 @@ TestChromeWebUIControllerFactory::CreateWebUIControllerForURL(
const GURL& url) const { const GURL& url) const {
Profile* profile = Profile::FromWebUI(web_ui); Profile* profile = Profile::FromWebUI(web_ui);
WebUIProvider* provider = GetWebUIProvider(profile, url); WebUIProvider* provider = GetWebUIProvider(profile, url);
return provider ? base::WrapUnique(provider->NewWebUI(web_ui, url)) return provider ? provider->NewWebUI(web_ui, url)
: ChromeWebUIControllerFactory::CreateWebUIControllerForURL( : ChromeWebUIControllerFactory::CreateWebUIControllerForURL(
web_ui, url); web_ui, url);
} }
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
#ifndef CHROME_TEST_BASE_TEST_CHROME_WEB_UI_CONTROLLER_FACTORY_H_ #ifndef CHROME_TEST_BASE_TEST_CHROME_WEB_UI_CONTROLLER_FACTORY_H_
#define CHROME_TEST_BASE_TEST_CHROME_WEB_UI_CONTROLLER_FACTORY_H_ #define CHROME_TEST_BASE_TEST_CHROME_WEB_UI_CONTROLLER_FACTORY_H_
#include <functional>
#include <map> #include <map>
#include <memory>
#include <string> #include <string>
#include "base/macros.h" #include "base/macros.h"
...@@ -23,14 +23,15 @@ class TestChromeWebUIControllerFactory : public ChromeWebUIControllerFactory { ...@@ -23,14 +23,15 @@ class TestChromeWebUIControllerFactory : public ChromeWebUIControllerFactory {
public: public:
// Create and return a new WebUI object for the |web_contents| based on the // Create and return a new WebUI object for the |web_contents| based on the
// |url|. // |url|.
virtual content::WebUIController* NewWebUI(content::WebUI* web_ui, virtual std::unique_ptr<content::WebUIController> NewWebUI(
const GURL& url) = 0; content::WebUI* web_ui,
const GURL& url) = 0;
protected: protected:
virtual ~WebUIProvider(); virtual ~WebUIProvider();
}; };
typedef std::map<std::string, WebUIProvider*> FactoryOverridesMap; using FactoryOverridesMap = std::map<std::string, WebUIProvider*>;
TestChromeWebUIControllerFactory(); TestChromeWebUIControllerFactory();
~TestChromeWebUIControllerFactory() override; ~TestChromeWebUIControllerFactory() override;
......
...@@ -21,7 +21,7 @@ namespace { ...@@ -21,7 +21,7 @@ namespace {
// Returns a new WebUI object for the WebContents from |arg0|. // Returns a new WebUI object for the WebContents from |arg0|.
ACTION(ReturnNewWebUI) { ACTION(ReturnNewWebUI) {
return new WebUIController(arg0); return std::make_unique<WebUIController>(arg0);
} }
// Mock the TestChromeWebUIControllerFactory::WebUIProvider to prove that we are // Mock the TestChromeWebUIControllerFactory::WebUIProvider to prove that we are
...@@ -29,8 +29,9 @@ ACTION(ReturnNewWebUI) { ...@@ -29,8 +29,9 @@ ACTION(ReturnNewWebUI) {
class MockWebUIProvider class MockWebUIProvider
: public TestChromeWebUIControllerFactory::WebUIProvider { : public TestChromeWebUIControllerFactory::WebUIProvider {
public: public:
MOCK_METHOD2(NewWebUI, WebUIController*(content::WebUI* web_ui, MOCK_METHOD2(NewWebUI,
const GURL& url)); std::unique_ptr<WebUIController>(content::WebUI* web_ui,
const GURL& url));
}; };
// Dummy URL location for us to override. // Dummy URL location for us to override.
...@@ -46,7 +47,7 @@ class TestChromeWebUIControllerFactoryTest : public InProcessBrowserTest { ...@@ -46,7 +47,7 @@ class TestChromeWebUIControllerFactoryTest : public InProcessBrowserTest {
void SetUpOnMainThread() override { void SetUpOnMainThread() override {
content::WebUIControllerFactory::UnregisterFactoryForTesting( content::WebUIControllerFactory::UnregisterFactoryForTesting(
ChromeWebUIControllerFactory::GetInstance()); ChromeWebUIControllerFactory::GetInstance());
test_factory_.reset(new TestChromeWebUIControllerFactory); test_factory_ = std::make_unique<TestChromeWebUIControllerFactory>();
content::WebUIControllerFactory::RegisterFactory(test_factory_.get()); content::WebUIControllerFactory::RegisterFactory(test_factory_.get());
test_factory_->AddFactoryOverride( test_factory_->AddFactoryOverride(
GURL(kChromeTestChromeWebUIControllerFactory).host(), &mock_provider_); GURL(kChromeTestChromeWebUIControllerFactory).host(), &mock_provider_);
......
...@@ -242,7 +242,8 @@ class PrintContentBrowserClient : public ChromeContentBrowserClient { ...@@ -242,7 +242,8 @@ class PrintContentBrowserClient : public ChromeContentBrowserClient {
preload_test_fixture_(preload_test_fixture), preload_test_fixture_(preload_test_fixture),
preload_test_name_(preload_test_name), preload_test_name_(preload_test_name),
preview_dialog_(nullptr), preview_dialog_(nullptr),
message_loop_runner_(new content::MessageLoopRunner) {} message_loop_runner_(
base::MakeRefCounted<content::MessageLoopRunner>()) {}
void Wait() { void Wait() {
message_loop_runner_->Run(); message_loop_runner_->Run();
...@@ -254,10 +255,9 @@ class PrintContentBrowserClient : public ChromeContentBrowserClient { ...@@ -254,10 +255,9 @@ class PrintContentBrowserClient : public ChromeContentBrowserClient {
content::WebContentsViewDelegate* GetWebContentsViewDelegate( content::WebContentsViewDelegate* GetWebContentsViewDelegate(
content::WebContents* web_contents) override { content::WebContents* web_contents) override {
preview_dialog_ = web_contents; preview_dialog_ = web_contents;
observer_.reset(new WebUIJsInjectionReadyObserver(preview_dialog_, observer_ = std::make_unique<WebUIJsInjectionReadyObserver>(
browser_test_, preview_dialog_, browser_test_, preload_test_fixture_,
preload_test_fixture_, preload_test_name_);
preload_test_name_));
message_loop_runner_->Quit(); message_loop_runner_->Quit();
return nullptr; return nullptr;
} }
...@@ -300,7 +300,7 @@ void WebUIBrowserTest::BrowsePrintPreload(const GURL& browse_to) { ...@@ -300,7 +300,7 @@ void WebUIBrowserTest::BrowsePrintPreload(const GURL& browse_to) {
const char WebUIBrowserTest::kDummyURL[] = "chrome://DummyURL"; const char WebUIBrowserTest::kDummyURL[] = "chrome://DummyURL";
WebUIBrowserTest::WebUIBrowserTest() WebUIBrowserTest::WebUIBrowserTest()
: test_handler_(new WebUITestHandler()), : test_handler_(std::make_unique<WebUITestHandler>()),
libraries_preloaded_(false), libraries_preloaded_(false),
override_selected_web_ui_(nullptr) {} override_selected_web_ui_(nullptr) {}
...@@ -358,14 +358,15 @@ class MockWebUIDataSource : public content::URLDataSource { ...@@ -358,14 +358,15 @@ class MockWebUIDataSource : public content::URLDataSource {
class MockWebUIProvider class MockWebUIProvider
: public TestChromeWebUIControllerFactory::WebUIProvider { : public TestChromeWebUIControllerFactory::WebUIProvider {
public: public:
MockWebUIProvider() {} MockWebUIProvider() = default;
~MockWebUIProvider() override = default;
// Returns a new WebUI // Returns a new WebUI
WebUIController* NewWebUI(content::WebUI* web_ui, const GURL& url) override { std::unique_ptr<WebUIController> NewWebUI(content::WebUI* web_ui,
WebUIController* controller = new content::WebUIController(web_ui); const GURL& url) override {
Profile* profile = Profile::FromWebUI(web_ui); Profile* profile = Profile::FromWebUI(web_ui);
content::URLDataSource::Add(profile, new MockWebUIDataSource()); content::URLDataSource::Add(profile, new MockWebUIDataSource());
return controller; return std::make_unique<content::WebUIController>(web_ui);
} }
private: private:
...@@ -395,7 +396,7 @@ void WebUIBrowserTest::SetUpOnMainThread() { ...@@ -395,7 +396,7 @@ void WebUIBrowserTest::SetUpOnMainThread() {
content::WebUIControllerFactory::UnregisterFactoryForTesting( content::WebUIControllerFactory::UnregisterFactoryForTesting(
ChromeWebUIControllerFactory::GetInstance()); ChromeWebUIControllerFactory::GetInstance());
test_factory_.reset(new TestChromeWebUIControllerFactory); test_factory_ = std::make_unique<TestChromeWebUIControllerFactory>();
content::WebUIControllerFactory::RegisterFactory(test_factory_.get()); content::WebUIControllerFactory::RegisterFactory(test_factory_.get());
......
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