summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerg <erg@chromium.org>2015-05-15 14:23:05 -0700
committerCommit bot <commit-bot@chromium.org>2015-05-15 21:23:20 +0000
commit9b949563e5701642b723d980d2165639040cfc1c (patch)
treeaa259e0a6d86c5587cd099bd0b0e3b1c5066d3d5
parenta9beeba86e9d5e4c132cd6169423487be2e84f8c (diff)
downloadchromium_src-9b949563e5701642b723d980d2165639040cfc1c.zip
chromium_src-9b949563e5701642b723d980d2165639040cfc1c.tar.gz
chromium_src-9b949563e5701642b723d980d2165639040cfc1c.tar.bz2
core_services: add native_viewport_service on non-android.
This moves native_viewport_service into core_services on desktop mandoline builds, colocating the service with the surfaces service. We can't do this on android yet because android does some tricks with the ApplicationLoader to make the native_viewport_service run in the shell's main thread. BUG=484234 Review URL: https://codereview.chromium.org/1135703004 Cr-Commit-Position: refs/heads/master@{#330201}
-rw-r--r--components/native_viewport/BUILD.gn2
-rw-r--r--components/native_viewport/main.cc73
-rw-r--r--components/native_viewport/native_viewport_application_delegate.cc61
-rw-r--r--components/native_viewport/native_viewport_application_delegate.h53
-rw-r--r--mandoline/app/core_services_initialization.cc5
-rw-r--r--mandoline/services/core_services/BUILD.gn6
-rw-r--r--mandoline/services/core_services/DEPS1
-rw-r--r--mandoline/services/core_services/core_services_application_delegate.cc7
8 files changed, 136 insertions, 72 deletions
diff --git a/components/native_viewport/BUILD.gn b/components/native_viewport/BUILD.gn
index 5b27f1d..a313b26 100644
--- a/components/native_viewport/BUILD.gn
+++ b/components/native_viewport/BUILD.gn
@@ -57,6 +57,8 @@ if (is_android) {
source_set("lib") {
sources = [
+ "native_viewport_application_delegate.cc",
+ "native_viewport_application_delegate.h",
"native_viewport_impl.cc",
"native_viewport_impl.h",
"onscreen_context_provider.cc",
diff --git a/components/native_viewport/main.cc b/components/native_viewport/main.cc
index 7cc3323..1a749f4 100644
--- a/components/native_viewport/main.cc
+++ b/components/native_viewport/main.cc
@@ -2,83 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/command_line.h"
-#include "base/macros.h"
#include "base/message_loop/message_loop.h"
-#include "components/gles2/gpu_impl.h"
-#include "components/native_viewport/native_viewport_impl.h"
-#include "components/native_viewport/public/cpp/args.h"
+#include "components/native_viewport/native_viewport_application_delegate.h"
#include "mojo/application/application_runner_chromium.h"
-#include "mojo/application/public/cpp/application_connection.h"
-#include "mojo/application/public/cpp/application_delegate.h"
-#include "mojo/application/public/cpp/application_impl.h"
-#include "mojo/application/public/cpp/interface_factory_impl.h"
-#include "mojo/common/tracing_impl.h"
#include "third_party/mojo/src/mojo/public/c/system/main.h"
-#include "ui/events/event_switches.h"
-#include "ui/gl/gl_surface.h"
-
-using mojo::ApplicationConnection;
-using mojo::Gpu;
-using mojo::NativeViewport;
-
-namespace native_viewport {
-
-class NativeViewportAppDelegate : public mojo::ApplicationDelegate,
- public mojo::InterfaceFactory<NativeViewport>,
- public mojo::InterfaceFactory<Gpu> {
- public:
- NativeViewportAppDelegate() : is_headless_(false) {}
- ~NativeViewportAppDelegate() override {}
-
- private:
- // mojo::ApplicationDelegate implementation.
- void Initialize(mojo::ApplicationImpl* application) override {
- tracing_.Initialize(application);
-
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
- is_headless_ = command_line->HasSwitch(mojo::kUseHeadlessConfig);
- if (!is_headless_) {
- if (command_line->HasSwitch(mojo::kUseTestConfig))
- gfx::GLSurface::InitializeOneOffForTests();
- else
- gfx::GLSurface::InitializeOneOff();
- }
- }
-
- bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
- connection->AddService<NativeViewport>(this);
- connection->AddService<Gpu>(this);
- return true;
- }
-
- // mojo::InterfaceFactory<NativeViewport> implementation.
- void Create(ApplicationConnection* connection,
- mojo::InterfaceRequest<NativeViewport> request) override {
- if (!gpu_state_.get())
- gpu_state_ = new gles2::GpuState;
- new NativeViewportImpl(is_headless_, gpu_state_, request.Pass());
- }
-
- // mojo::InterfaceFactory<Gpu> implementation.
- void Create(ApplicationConnection* connection,
- mojo::InterfaceRequest<Gpu> request) override {
- if (!gpu_state_.get())
- gpu_state_ = new gles2::GpuState;
- new gles2::GpuImpl(request.Pass(), gpu_state_);
- }
-
- scoped_refptr<gles2::GpuState> gpu_state_;
- bool is_headless_;
- mojo::TracingImpl tracing_;
-
- DISALLOW_COPY_AND_ASSIGN(NativeViewportAppDelegate);
-};
-}
MojoResult MojoMain(MojoHandle shell_handle) {
mojo::ApplicationRunnerChromium runner(
- new native_viewport::NativeViewportAppDelegate);
+ new native_viewport::NativeViewportApplicationDelegate);
runner.set_message_loop_type(base::MessageLoop::TYPE_UI);
return runner.Run(shell_handle);
}
diff --git a/components/native_viewport/native_viewport_application_delegate.cc b/components/native_viewport/native_viewport_application_delegate.cc
new file mode 100644
index 0000000..4f247c7
--- /dev/null
+++ b/components/native_viewport/native_viewport_application_delegate.cc
@@ -0,0 +1,61 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "components/native_viewport/native_viewport_application_delegate.h"
+
+#include "base/command_line.h"
+#include "components/native_viewport/native_viewport_impl.h"
+#include "components/native_viewport/public/cpp/args.h"
+#include "mojo/application/public/cpp/application_connection.h"
+#include "mojo/application/public/cpp/application_impl.h"
+#include "ui/events/event_switches.h"
+#include "ui/gl/gl_surface.h"
+
+namespace native_viewport {
+
+NativeViewportApplicationDelegate::NativeViewportApplicationDelegate()
+ : is_headless_(false) {
+}
+
+NativeViewportApplicationDelegate::~NativeViewportApplicationDelegate() {
+}
+
+void NativeViewportApplicationDelegate::Initialize(
+ mojo::ApplicationImpl* application) {
+ tracing_.Initialize(application);
+
+ base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
+ is_headless_ = command_line->HasSwitch(mojo::kUseHeadlessConfig);
+ if (!is_headless_) {
+ if (command_line->HasSwitch(mojo::kUseTestConfig))
+ gfx::GLSurface::InitializeOneOffForTests();
+ else
+ gfx::GLSurface::InitializeOneOff();
+ }
+}
+
+bool NativeViewportApplicationDelegate::ConfigureIncomingConnection(
+ mojo::ApplicationConnection* connection) {
+ connection->AddService<mojo::NativeViewport>(this);
+ connection->AddService<mojo::Gpu>(this);
+ return true;
+}
+
+void NativeViewportApplicationDelegate::Create(
+ mojo::ApplicationConnection* connection,
+ mojo::InterfaceRequest<mojo::NativeViewport> request) {
+ if (!gpu_state_.get())
+ gpu_state_ = new gles2::GpuState;
+ new NativeViewportImpl(is_headless_, gpu_state_, request.Pass());
+}
+
+void NativeViewportApplicationDelegate::Create(
+ mojo::ApplicationConnection* connection,
+ mojo::InterfaceRequest<mojo::Gpu> request) {
+ if (!gpu_state_.get())
+ gpu_state_ = new gles2::GpuState;
+ new gles2::GpuImpl(request.Pass(), gpu_state_);
+}
+
+} // namespace native_viewport
diff --git a/components/native_viewport/native_viewport_application_delegate.h b/components/native_viewport/native_viewport_application_delegate.h
new file mode 100644
index 0000000..4584fff
--- /dev/null
+++ b/components/native_viewport/native_viewport_application_delegate.h
@@ -0,0 +1,53 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_NATIVE_VIEWPORT_NATIVE_VIEWPORT_APPLICATION_DELEGATE_H_
+#define COMPONENTS_NATIVE_VIEWPORT_NATIVE_VIEWPORT_APPLICATION_DELEGATE_H_
+
+#include "base/macros.h"
+#include "components/gles2/gpu_impl.h"
+#include "components/native_viewport/public/interfaces/native_viewport.mojom.h"
+#include "mojo/application/public/cpp/application_delegate.h"
+#include "mojo/application/public/cpp/interface_factory_impl.h"
+#include "mojo/common/tracing_impl.h"
+
+namespace mojo {
+class ApplicationConnection;
+class ApplicationImpl;
+}
+
+namespace native_viewport {
+
+class NativeViewportApplicationDelegate
+ : public mojo::ApplicationDelegate,
+ public mojo::InterfaceFactory<mojo::NativeViewport>,
+ public mojo::InterfaceFactory<mojo::Gpu> {
+ public:
+ NativeViewportApplicationDelegate();
+ ~NativeViewportApplicationDelegate() override;
+
+ private:
+ // mojo::ApplicationDelegate implementation.
+ void Initialize(mojo::ApplicationImpl* application) override;
+ bool ConfigureIncomingConnection(
+ mojo::ApplicationConnection* connection) override;
+
+ // mojo::InterfaceFactory<NativeViewport> implementation.
+ void Create(mojo::ApplicationConnection* connection,
+ mojo::InterfaceRequest<mojo::NativeViewport> request) override;
+
+ // mojo::InterfaceFactory<Gpu> implementation.
+ void Create(mojo::ApplicationConnection* connection,
+ mojo::InterfaceRequest<mojo::Gpu> request) override;
+
+ scoped_refptr<gles2::GpuState> gpu_state_;
+ bool is_headless_;
+ mojo::TracingImpl tracing_;
+
+ DISALLOW_COPY_AND_ASSIGN(NativeViewportApplicationDelegate);
+};
+
+} // namespace native_viewport
+
+#endif // COMPONENTS_NATIVE_VIEWPORT_NATIVE_VIEWPORT_APPLICATION_DELEGATE_H_
diff --git a/mandoline/app/core_services_initialization.cc b/mandoline/app/core_services_initialization.cc
index 5eeb30c..612dd2b 100644
--- a/mandoline/app/core_services_initialization.cc
+++ b/mandoline/app/core_services_initialization.cc
@@ -14,6 +14,11 @@ void InitCoreServicesForContext(mojo::runner::Context* context) {
mojo::shell::ApplicationManager* manager = context->application_manager();
manager->RegisterApplicationPackageAlias(GURL("mojo:clipboard"),
GURL("mojo:core_services"), "Core");
+#if !defined(OS_ANDROID)
+ manager->RegisterApplicationPackageAlias(GURL("mojo:native_viewport_service"),
+ GURL("mojo:core_services"),
+ "Surfaces");
+#endif
manager->RegisterApplicationPackageAlias(
GURL("mojo:network_service"), GURL("mojo:core_services"), "Network");
#if !defined(OS_ANDROID)
diff --git a/mandoline/services/core_services/BUILD.gn b/mandoline/services/core_services/BUILD.gn
index eecacaf..19ec9af 100644
--- a/mandoline/services/core_services/BUILD.gn
+++ b/mandoline/services/core_services/BUILD.gn
@@ -76,6 +76,10 @@ source_set("sources") {
]
if (!is_android) {
- deps += [ "//mandoline/ui/omnibox:lib" ]
+ deps += [
+ "//components/native_viewport:lib",
+ "//components/native_viewport/public/cpp:args",
+ "//mandoline/ui/omnibox:lib",
+ ]
}
}
diff --git a/mandoline/services/core_services/DEPS b/mandoline/services/core_services/DEPS
index 5234781..2035162 100644
--- a/mandoline/services/core_services/DEPS
+++ b/mandoline/services/core_services/DEPS
@@ -1,6 +1,7 @@
include_rules = [
"+components/clipboard",
"+components/kiosk_wm",
+ "+components/native_viewport",
"+components/resource_provider",
"+components/surfaces",
"+components/view_manager",
diff --git a/mandoline/services/core_services/core_services_application_delegate.cc b/mandoline/services/core_services/core_services_application_delegate.cc
index 5104cac..5eeb52c 100644
--- a/mandoline/services/core_services/core_services_application_delegate.cc
+++ b/mandoline/services/core_services/core_services_application_delegate.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "components/clipboard/clipboard_application_delegate.h"
+#include "components/native_viewport/native_viewport_application_delegate.h"
#include "components/resource_provider/resource_provider_app.h"
#include "components/surfaces/surfaces_service_application.h"
#include "components/view_manager/view_manager_app.h"
@@ -128,6 +129,10 @@ void CoreServicesApplicationDelegate::StartApplication(
scoped_ptr<mojo::ApplicationDelegate> delegate;
if (url == "mojo://clipboard/")
delegate.reset(new clipboard::ClipboardApplicationDelegate);
+#if !defined(OS_ANDROID)
+ else if (url == "mojo://native_viewport_service/")
+ delegate.reset(new native_viewport::NativeViewportApplicationDelegate);
+#endif
else if (url == "mojo://network_service/")
delegate.reset(new NetworkServiceDelegate);
#if !defined(OS_ANDROID)
@@ -152,6 +157,8 @@ void CoreServicesApplicationDelegate::StartApplication(
// In the case of mojo:network_service, we must use an IO message loop.
if (url == "mojo://network_service/") {
thread_options.message_loop_type = base::MessageLoop::TYPE_IO;
+ } else if (url == "mojo://native_viewport_service/") {
+ thread_options.message_loop_type = base::MessageLoop::TYPE_UI;
} else {
// We must use a MessagePumpMojo to awake on mojo messages.
thread_options.message_pump_factory =