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

Unified Diff: mojo/application/content_handler.cc

Issue 688693004: alternate shape for content handler boilerplate (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: 80 cols Created 6 years, 2 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
« no previous file with comments | « mojo/application/content_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/application/content_handler.cc
diff --git a/mojo/application/content_handler.cc b/mojo/application/content_handler.cc
index e9fb0dab8e32a888ad4eab38015e0b1bb1ea889d..5c02af48f6160fed645d3f6201afa231282d99ce 100644
--- a/mojo/application/content_handler.cc
+++ b/mojo/application/content_handler.cc
@@ -13,9 +13,7 @@
#include "mojo/public/cpp/application/application_connection.h"
#include "mojo/public/cpp/application/application_delegate.h"
#include "mojo/public/cpp/application/application_impl.h"
-#include "mojo/public/cpp/application/interface_factory_impl.h"
#include "mojo/public/cpp/bindings/interface_impl.h"
-#include "mojo/services/public/interfaces/content_handler/content_handler.mojom.h"
namespace mojo {
@@ -26,20 +24,21 @@ class ApplicationThread : public base::PlatformThread::Delegate {
ApplicationThread(
scoped_refptr<base::MessageLoopProxy> handler_thread,
const base::Callback<void(ApplicationThread*)>& termination_callback,
- mojo::ContentHandlerDelegate* handler_delegate,
+ ContentHandlerFactory::Delegate* delegate,
ShellPtr shell,
URLResponsePtr response)
: handler_thread_(handler_thread),
termination_callback_(termination_callback),
- handler_delegate_(handler_delegate),
+ delegate_(delegate),
shell_(shell.Pass()),
response_(response.Pass()) {}
private:
void ThreadMain() override {
base::MessageLoop loop(common::MessagePumpMojo::Create());
- application_ =
- handler_delegate_->CreateApplication(shell_.Pass(), response_.Pass());
+ application_.reset(
+ new ApplicationImpl(delegate_->CreateApplication(response_.Pass()),
+ shell_.PassMessagePipe()));
loop.Run();
handler_thread_->PostTask(FROM_HERE,
base::Bind(termination_callback_, this));
@@ -47,10 +46,9 @@ class ApplicationThread : public base::PlatformThread::Delegate {
scoped_refptr<base::MessageLoopProxy> handler_thread_;
base::Callback<void(ApplicationThread*)> termination_callback_;
- mojo::ContentHandlerDelegate* handler_delegate_;
+ ContentHandlerFactory::Delegate* delegate_;
ShellPtr shell_;
URLResponsePtr response_;
- scoped_ptr<ApplicationDelegate> application_delegate_;
scoped_ptr<mojo::InterfaceImpl<mojo::Application>> application_;
DISALLOW_COPY_AND_ASSIGN(ApplicationThread);
@@ -58,7 +56,7 @@ class ApplicationThread : public base::PlatformThread::Delegate {
class ContentHandlerImpl : public InterfaceImpl<ContentHandler> {
public:
- explicit ContentHandlerImpl(mojo::ContentHandlerDelegate* delegate)
+ explicit ContentHandlerImpl(ContentHandlerFactory::Delegate* delegate)
: delegate_(delegate) {}
~ContentHandlerImpl() {
for (auto thread : active_threads_) {
@@ -94,51 +92,25 @@ class ContentHandlerImpl : public InterfaceImpl<ContentHandler> {
// quitting.
}
- mojo::ContentHandlerDelegate* delegate_;
+ ContentHandlerFactory::Delegate* delegate_;
std::map<ApplicationThread*, base::PlatformThreadHandle> active_threads_;
DISALLOW_COPY_AND_ASSIGN(ContentHandlerImpl);
};
-class ContentHandlerApp : public ApplicationDelegate {
- public:
- explicit ContentHandlerApp(scoped_ptr<ContentHandlerDelegate> delegate)
- : delegate_(delegate.Pass()), content_handler_factory_(delegate_.get()) {}
-
- private:
- // Overridden from ApplicationDelegate:
- virtual void Initialize(ApplicationImpl* app) override {
- delegate_->Initialize(app);
- }
-
- virtual bool ConfigureIncomingConnection(
- ApplicationConnection* connection) override {
- connection->AddService(&content_handler_factory_);
- return delegate_->ConfigureIncomingConnection(connection);
- }
-
- virtual bool ConfigureOutgoingConnection(
- ApplicationConnection* connection) override {
- return delegate_->ConfigureOutgoingConnection(connection);
- }
-
- scoped_ptr<ContentHandlerDelegate> delegate_;
- InterfaceFactoryImplWithContext<ContentHandlerImpl,
- mojo::ContentHandlerDelegate>
- content_handler_factory_;
+} // namespace
- DISALLOW_COPY_AND_ASSIGN(ContentHandlerApp);
-};
+ContentHandlerFactory::ContentHandlerFactory(
+ ContentHandlerFactory::Delegate* delegate)
+ : delegate_(delegate) {
+}
-} // namespace
+ContentHandlerFactory::~ContentHandlerFactory() {
+}
-// static
-MojoResult ContentHandlerRunner::Run(
- MojoHandle shell_handle,
- scoped_ptr<mojo::ContentHandlerDelegate> delegate) {
- mojo::ApplicationRunnerChromium runner(
- new ContentHandlerApp(delegate.Pass()));
- return runner.Run(shell_handle);
+void ContentHandlerFactory::Create(ApplicationConnection* connection,
+ InterfaceRequest<ContentHandler> request) {
+ BindToRequest(new ContentHandlerImpl(delegate_), &request);
}
} // namespace mojo
« no previous file with comments | « mojo/application/content_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698