Make ApplicationRunner's ctor's ApplicationDelegate* argument an std::unique_ptr instead.
And ditto for its delegate_ member. The lack of std::make_unique makes
me very sad.
R=jamesr@chromium.org
Review URL: https://codereview.chromium.org/1517743003 .
diff --git a/examples/apptest/example_service_application.cc b/examples/apptest/example_service_application.cc
index e1ef72f..9efceba 100644
--- a/examples/apptest/example_service_application.cc
+++ b/examples/apptest/example_service_application.cc
@@ -4,6 +4,8 @@
#include "examples/apptest/example_service_application.h"
+#include <memory>
+
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
#include "mojo/public/cpp/application/application_runner.h"
@@ -30,6 +32,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::ExampleServiceApplication());
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::ExampleServiceApplication>(
+ new mojo::ExampleServiceApplication()));
return runner.Run(application_request);
}
diff --git a/examples/audio_play_test/play_tone.cc b/examples/audio_play_test/play_tone.cc
index 8b65ef6..001f32e 100644
--- a/examples/audio_play_test/play_tone.cc
+++ b/examples/audio_play_test/play_tone.cc
@@ -243,6 +243,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle app_request) {
- mojo::ApplicationRunner runner(new mojo::media::audio::examples::PlayToneApp);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::media::audio::examples::PlayToneApp>(
+ new mojo::media::audio::examples::PlayToneApp()));
return runner.Run(app_request);
}
diff --git a/examples/audio_play_test/play_wav.cc b/examples/audio_play_test/play_wav.cc
index d4706b0..3cc1ce6 100644
--- a/examples/audio_play_test/play_wav.cc
+++ b/examples/audio_play_test/play_wav.cc
@@ -563,6 +563,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle app_request) {
- mojo::ApplicationRunner runner(new mojo::media::audio::examples::PlayWAVApp);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::media::audio::examples::PlayWAVApp>(
+ new mojo::media::audio::examples::PlayWAVApp()));
return runner.Run(app_request);
}
diff --git a/examples/bank_app/bank.cc b/examples/bank_app/bank.cc
index 11a06b5..753967c 100644
--- a/examples/bank_app/bank.cc
+++ b/examples/bank_app/bank.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "examples/bank_app/bank.mojom.h"
#include "mojo/common/binding_set.h"
#include "mojo/public/c/system/main.h"
@@ -92,6 +94,7 @@
} // namespace examples
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new examples::BankApp());
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<examples::BankApp>(new examples::BankApp()));
return runner.Run(application_request);
}
diff --git a/examples/bank_app/customer.cc b/examples/bank_app/customer.cc
index b312d7d..a572de0 100644
--- a/examples/bank_app/customer.cc
+++ b/examples/bank_app/customer.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <stdio.h>
+#include <memory>
#include "examples/bank_app/bank.mojom.h"
#include "mojo/public/c/system/main.h"
@@ -54,6 +54,7 @@
} // namespace examples
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new examples::BankCustomer);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<examples::BankCustomer>(new examples::BankCustomer()));
return runner.Run(application_request);
}
diff --git a/examples/content_handler_demo/content_handler_demo.cc b/examples/content_handler_demo/content_handler_demo.cc
index df44a5c..aa6012d 100644
--- a/examples/content_handler_demo/content_handler_demo.cc
+++ b/examples/content_handler_demo/content_handler_demo.cc
@@ -4,6 +4,8 @@
#include <stdio.h>
+#include <memory>
+
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_impl.h"
@@ -116,6 +118,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::examples::ContentHandlerApp);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::examples::ContentHandlerApp>(
+ new mojo::examples::ContentHandlerApp()));
return runner.Run(application_request);
}
diff --git a/examples/echo/echo_client.cc b/examples/echo/echo_client.cc
index f994dd9..5ff27cf 100644
--- a/examples/echo/echo_client.cc
+++ b/examples/echo/echo_client.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <stdio.h>
+#include <memory>
#include "base/logging.h"
#include "examples/echo/echo.mojom.h"
@@ -39,6 +39,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::examples::EchoClientDelegate);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::examples::EchoClientDelegate>(
+ new mojo::examples::EchoClientDelegate()));
return runner.Run(application_request);
}
diff --git a/examples/echo/echo_server.cc b/examples/echo/echo_server.cc
index 6ff79a6..43a975e 100644
--- a/examples/echo/echo_server.cc
+++ b/examples/echo/echo_server.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "examples/echo/echo.mojom.h"
#include "mojo/common/binding_set.h"
#include "mojo/public/c/system/main.h"
@@ -133,7 +135,8 @@
MojoResult MojoMain(MojoHandle application_request) {
// Uncomment one of the three servers at a time to see it work:
- mojo::ApplicationRunner runner(new mojo::examples::MultiServer());
+ mojo::ApplicationRunner runner(std::unique_ptr<mojo::examples::MultiServer>(
+ new mojo::examples::MultiServer()));
// mojo::ApplicationRunner runner(new mojo::examples::SingletonServer());
// mojo::ApplicationRunner runner(new mojo::examples::OneAtATimeServer());
diff --git a/examples/indirect_service/indirect_integer_service.cc b/examples/indirect_service/indirect_integer_service.cc
index 67fe420..e4239a9 100644
--- a/examples/indirect_service/indirect_integer_service.cc
+++ b/examples/indirect_service/indirect_integer_service.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "examples/indirect_service/indirect_service_demo.mojom.h"
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
@@ -71,7 +73,7 @@
MojoResult MojoMain(MojoHandle application_request) {
mojo::ApplicationRunner runner(
- new mojo::examples::IndirectIntegerServiceAppDelegate);
+ std::unique_ptr<mojo::examples::IndirectIntegerServiceAppDelegate>(
+ new mojo::examples::IndirectIntegerServiceAppDelegate()));
return runner.Run(application_request);
}
-
diff --git a/examples/indirect_service/integer_service.cc b/examples/indirect_service/integer_service.cc
index 8399eb0..42f718f 100644
--- a/examples/indirect_service/integer_service.cc
+++ b/examples/indirect_service/integer_service.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "examples/indirect_service/indirect_service_demo.mojom.h"
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
@@ -48,7 +50,9 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::examples::IntegerServiceAppDelegate);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::examples::IntegerServiceAppDelegate>(
+ new mojo::examples::IntegerServiceAppDelegate));
return runner.Run(application_request);
}
diff --git a/examples/spinning_cube/spinning_cube_app.cc b/examples/spinning_cube/spinning_cube_app.cc
index 613510d..a018e3a 100644
--- a/examples/spinning_cube/spinning_cube_app.cc
+++ b/examples/spinning_cube/spinning_cube_app.cc
@@ -2,8 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <stdio.h>
-#include <string>
+#include <assert.h>
+
+#include <memory>
#include "base/bind.h"
#include "base/memory/scoped_ptr.h"
@@ -91,6 +92,7 @@
} // namespace examples
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new examples::SpinningCubeApp);
+ mojo::ApplicationRunner runner(std::unique_ptr<examples::SpinningCubeApp>(
+ new examples::SpinningCubeApp()));
return runner.Run(application_request);
}
diff --git a/examples/wget/wget.cc b/examples/wget/wget.cc
index 575d8cb..32257b4 100644
--- a/examples/wget/wget.cc
+++ b/examples/wget/wget.cc
@@ -4,6 +4,8 @@
#include <stdio.h>
+#include <memory>
+
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_impl.h"
@@ -109,6 +111,7 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::examples::WGetApp);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::examples::WGetApp>(new mojo::examples::WGetApp()));
return runner.Run(application_request);
}
diff --git a/mojo/public/cpp/application/application_runner.h b/mojo/public/cpp/application/application_runner.h
index aa351b1..5a2ea77 100644
--- a/mojo/public/cpp/application/application_runner.h
+++ b/mojo/public/cpp/application/application_runner.h
@@ -5,6 +5,8 @@
#ifndef MOJO_PUBLIC_CPP_APPLICATION_APPLICATION_RUNNER_H_
#define MOJO_PUBLIC_CPP_APPLICATION_APPLICATION_RUNNER_H_
+#include <memory>
+
#include "mojo/public/c/environment/logger.h"
#include "mojo/public/cpp/system/core.h"
@@ -25,8 +27,7 @@
// ultimately Quit().
class ApplicationRunner {
public:
- // Takes ownership of |delegate|.
- explicit ApplicationRunner(ApplicationDelegate* delegate);
+ explicit ApplicationRunner(std::unique_ptr<ApplicationDelegate> delegate);
~ApplicationRunner();
// This replaces the underlying logger implementation with the one provided.
@@ -43,7 +44,7 @@
MojoResult Run(MojoHandle application_request);
private:
- ApplicationDelegate* delegate_;
+ std::unique_ptr<ApplicationDelegate> delegate_;
MOJO_DISALLOW_COPY_AND_ASSIGN(ApplicationRunner);
};
diff --git a/mojo/public/cpp/application/lib/application_runner.cc b/mojo/public/cpp/application/lib/application_runner.cc
index 214d09f..3654715 100644
--- a/mojo/public/cpp/application/lib/application_runner.cc
+++ b/mojo/public/cpp/application/lib/application_runner.cc
@@ -20,8 +20,9 @@
RunLoop::current()->Quit();
}
-ApplicationRunner::ApplicationRunner(ApplicationDelegate* delegate)
- : delegate_(delegate) {}
+ApplicationRunner::ApplicationRunner(
+ std::unique_ptr<ApplicationDelegate> delegate)
+ : delegate_(std::move(delegate)) {}
ApplicationRunner::~ApplicationRunner() {
assert(!delegate_);
@@ -47,13 +48,13 @@
Environment env;
{
RunLoop loop;
- ApplicationImpl app(delegate_, MakeRequest<Application>(MakeScopedHandle(
- MessagePipeHandle(app_request_handle))));
+ ApplicationImpl app(delegate_.get(),
+ MakeRequest<Application>(MakeScopedHandle(
+ MessagePipeHandle(app_request_handle))));
loop.Run();
}
- delete delegate_;
- delegate_ = nullptr;
+ delegate_.reset();
g_running = false;
diff --git a/mojo/public/cpp/bindings/tests/versioning_test_service.cc b/mojo/public/cpp/bindings/tests/versioning_test_service.cc
index 0896b8c..419fa3a 100644
--- a/mojo/public/cpp/bindings/tests/versioning_test_service.cc
+++ b/mojo/public/cpp/bindings/tests/versioning_test_service.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <map>
+#include <memory>
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
@@ -119,7 +120,8 @@
MojoResult MojoMain(MojoHandle application_request) {
mojo::ApplicationRunner runner(
- new mojo::test::versioning::HumanResourceSystemServer());
+ std::unique_ptr<mojo::test::versioning::HumanResourceSystemServer>(
+ new mojo::test::versioning::HumanResourceSystemServer()));
return runner.Run(application_request);
}
diff --git a/services/authentication/dummy_authentication_app.cc b/services/authentication/dummy_authentication_app.cc
index b98c15e..a829b74 100644
--- a/services/authentication/dummy_authentication_app.cc
+++ b/services/authentication/dummy_authentication_app.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "mojo/common/binding_set.h"
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
@@ -57,6 +59,7 @@
MojoResult MojoMain(MojoHandle application_request) {
mojo::ApplicationRunner runner(
- new authentication::DummyAuthenticationApplication);
+ std::unique_ptr<authentication::DummyAuthenticationApplication>(
+ new authentication::DummyAuthenticationApplication()));
return runner.Run(application_request);
}
diff --git a/services/device_info/device_info.cc b/services/device_info/device_info.cc
index 0dfdfbc..54fe54c 100644
--- a/services/device_info/device_info.cc
+++ b/services/device_info/device_info.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include <cstdlib>
+#include <memory>
#include "mojo/common/binding_set.h"
#include "mojo/public/c/system/main.h"
@@ -51,6 +52,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::services::device_info::DeviceInfo());
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::services::device_info::DeviceInfo>(
+ new mojo::services::device_info::DeviceInfo()));
return runner.Run(application_request);
}
diff --git a/services/http_server/http_server_app.cc b/services/http_server/http_server_app.cc
index 8ff7b12..fa063fa 100644
--- a/services/http_server/http_server_app.cc
+++ b/services/http_server/http_server_app.cc
@@ -2,7 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/memory/scoped_ptr.h"
+#include <memory>
+
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_impl.h"
@@ -41,12 +42,13 @@
}
mojo::ApplicationImpl* app_;
- scoped_ptr<HttpServerFactoryImpl> http_server_factory_;
+ std::unique_ptr<HttpServerFactoryImpl> http_server_factory_;
};
} // namespace http_server
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new http_server::HttpServerApp);
+ mojo::ApplicationRunner runner(std::unique_ptr<http_server::HttpServerApp>(
+ new http_server::HttpServerApp()));
return runner.Run(application_request);
}
diff --git a/services/nacl/nonsfi/pnacl_compile.cc b/services/nacl/nonsfi/pnacl_compile.cc
index 63ca9ca..acb2757 100644
--- a/services/nacl/nonsfi/pnacl_compile.cc
+++ b/services/nacl/nonsfi/pnacl_compile.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "base/logging.h"
#include "mojo/nacl/nonsfi/file_util.h"
#include "mojo/nacl/nonsfi/nexe_launcher_nonsfi.h"
@@ -60,6 +62,7 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::nacl::MultiPexeCompiler());
+ mojo::ApplicationRunner runner(std::unique_ptr<mojo::nacl::MultiPexeCompiler>(
+ new mojo::nacl::MultiPexeCompiler()));
return runner.Run(application_request);
}
diff --git a/services/nacl/nonsfi/pnacl_link.cc b/services/nacl/nonsfi/pnacl_link.cc
index 3a3ddfe..509495c 100644
--- a/services/nacl/nonsfi/pnacl_link.cc
+++ b/services/nacl/nonsfi/pnacl_link.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "base/logging.h"
#include "mojo/nacl/nonsfi/file_util.h"
#include "mojo/nacl/nonsfi/nexe_launcher_nonsfi.h"
@@ -59,6 +61,7 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::nacl::MultiPexeLinker());
+ mojo::ApplicationRunner runner(std::unique_ptr<mojo::nacl::MultiPexeLinker>(
+ new mojo::nacl::MultiPexeLinker()));
return runner.Run(application_request);
}
diff --git a/services/test_service/test_request_tracker_application.cc b/services/test_service/test_request_tracker_application.cc
index 6f8f049..6cfd204 100644
--- a/services/test_service/test_request_tracker_application.cc
+++ b/services/test_service/test_request_tracker_application.cc
@@ -4,7 +4,7 @@
#include "services/test_service/test_request_tracker_application.h"
-#include <assert.h>
+#include <memory>
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
@@ -58,6 +58,7 @@
MojoResult MojoMain(MojoHandle application_request) {
mojo::ApplicationRunner runner(
- new mojo::test::TestRequestTrackerApplication);
+ std::unique_ptr<mojo::test::TestRequestTrackerApplication>(
+ new mojo::test::TestRequestTrackerApplication()));
return runner.Run(application_request);
}
diff --git a/services/test_service/test_service_application.cc b/services/test_service/test_service_application.cc
index f168cb6..b288d98 100644
--- a/services/test_service/test_service_application.cc
+++ b/services/test_service/test_service_application.cc
@@ -6,6 +6,8 @@
#include <assert.h>
+#include <memory>
+
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_connection.h"
#include "mojo/public/cpp/application/application_runner.h"
@@ -17,11 +19,9 @@
namespace test {
TestServiceApplication::TestServiceApplication()
- : ref_count_(0), app_impl_(nullptr) {
-}
+ : ref_count_(0), app_impl_(nullptr) {}
-TestServiceApplication::~TestServiceApplication() {
-}
+TestServiceApplication::~TestServiceApplication() {}
void TestServiceApplication::Initialize(ApplicationImpl* app) {
app_impl_ = app;
@@ -61,6 +61,8 @@
} // namespace mojo
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new mojo::test::TestServiceApplication);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<mojo::test::TestServiceApplication>(
+ new mojo::test::TestServiceApplication()));
return runner.Run(application_request);
}
diff --git a/shell/test/pingable_app.cc b/shell/test/pingable_app.cc
index fe49993..f65b682 100644
--- a/shell/test/pingable_app.cc
+++ b/shell/test/pingable_app.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <memory>
+
#include "mojo/public/c/system/main.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_impl.h"
@@ -65,6 +67,7 @@
};
MojoResult MojoMain(MojoHandle application_request) {
- mojo::ApplicationRunner runner(new PingableApp);
+ mojo::ApplicationRunner runner(
+ std::unique_ptr<PingableApp>(new PingableApp()));
return runner.Run(application_request);
}