summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfsamuel <fsamuel@chromium.org>2015-06-08 11:12:05 -0700
committerCommit bot <commit-bot@chromium.org>2015-06-08 18:13:22 +0000
commitdf4ca35a69a71ca175d6ce81dc499b615bb0c8e5 (patch)
tree91c10f715b81d13c7e9c8a36a39a821a2ca44bea
parente5acfbccce659364606758b687b90488e2f44be2 (diff)
downloadchromium_src-df4ca35a69a71ca175d6ce81dc499b615bb0c8e5.zip
chromium_src-df4ca35a69a71ca175d6ce81dc499b615bb0c8e5.tar.gz
chromium_src-df4ca35a69a71ca175d6ce81dc499b615bb0c8e5.tar.bz2
Mandoline: Remove native_viewport.mojom
native_viewport mojom + app add a lot of unnecessary complexity. This CL removes native_viewport entirely and replaces it with platform_viewport that is managed by the DefaultDisplayManager. BUG=487881 Test=internal change only. Committed: https://crrev.com/3a4eab3f2f4fd8f7c7eb4d195c0e86a47e085d98 Cr-Commit-Position: refs/heads/master@{#333183} patch from issue 1149083010 at patchset 250001 (http://crrev.com/1149083010#ps250001) Review URL: https://codereview.chromium.org/1153163004 Cr-Commit-Position: refs/heads/master@{#333294}
-rw-r--r--components/html_viewer/DEPS1
-rw-r--r--components/html_viewer/html_document.cc7
-rw-r--r--components/view_manager/connection_manager.cc9
-rw-r--r--components/view_manager/connection_manager.h9
-rw-r--r--components/view_manager/display_manager.cc107
-rw-r--r--components/view_manager/display_manager.h49
-rw-r--r--components/view_manager/event_dispatcher.cc6
-rw-r--r--components/view_manager/event_dispatcher.h11
-rw-r--r--components/view_manager/native_viewport/BUILD.gn2
-rw-r--r--components/view_manager/native_viewport/native_viewport_impl.cc166
-rw-r--r--components/view_manager/native_viewport/native_viewport_impl.h90
-rw-r--r--components/view_manager/native_viewport/platform_viewport.h8
-rw-r--r--components/view_manager/native_viewport/platform_viewport_android.cc17
-rw-r--r--components/view_manager/native_viewport/platform_viewport_android.h3
-rw-r--r--components/view_manager/native_viewport/platform_viewport_headless.cc7
-rw-r--r--components/view_manager/native_viewport/platform_viewport_headless.h1
-rw-r--r--components/view_manager/native_viewport/platform_viewport_win.cc20
-rw-r--r--components/view_manager/native_viewport/platform_viewport_x11.cc18
-rw-r--r--components/view_manager/public/cpp/lib/view.cc2
-rw-r--r--components/view_manager/public/interfaces/BUILD.gn1
-rw-r--r--components/view_manager/public/interfaces/native_viewport.mojom42
-rw-r--r--components/view_manager/public/interfaces/view_manager.mojom7
-rw-r--r--components/view_manager/view_manager_app.cc32
-rw-r--r--components/view_manager/view_manager_app.h6
-rw-r--r--components/view_manager/view_manager_service_unittest.cc2
-rw-r--r--mojo/runner/android/native_viewport_application_loader.cc55
-rw-r--r--mojo/runner/android/native_viewport_application_loader.h58
27 files changed, 188 insertions, 548 deletions
diff --git a/components/html_viewer/DEPS b/components/html_viewer/DEPS
index baf64b8..8867472 100644
--- a/components/html_viewer/DEPS
+++ b/components/html_viewer/DEPS
@@ -16,6 +16,7 @@ include_rules = [
"+mojo/application",
"+mojo/cc",
"+mojo/common",
+ "+mojo/converters/geometry",
"+mojo/converters/surfaces",
"+mojo/platform_handle",
"+mojo/public",
diff --git a/components/html_viewer/html_document.cc b/components/html_viewer/html_document.cc
index 80f2130..441de84 100644
--- a/components/html_viewer/html_document.cc
+++ b/components/html_viewer/html_document.cc
@@ -26,6 +26,7 @@
#include "mojo/application/public/cpp/application_impl.h"
#include "mojo/application/public/cpp/connect.h"
#include "mojo/application/public/interfaces/shell.mojom.h"
+#include "mojo/converters/geometry/geometry_type_converters.h"
#include "skia/ext/refptr.h"
#include "third_party/WebKit/public/platform/Platform.h"
#include "third_party/WebKit/public/platform/WebHTTPHeaderVisitor.h"
@@ -247,9 +248,9 @@ void HTMLDocument::InitSetupAndLoadIfNecessary() {
return;
if (!web_view_) {
- setup_->InitIfNecessary(gfx::Size(root_->viewport_metrics().size->width,
- root_->viewport_metrics().size->height),
- root_->viewport_metrics().device_pixel_ratio);
+ setup_->InitIfNecessary(
+ root_->viewport_metrics().size_in_pixels.To<gfx::Size>(),
+ root_->viewport_metrics().device_pixel_ratio);
Load(response_.Pass());
}
diff --git a/components/view_manager/connection_manager.cc b/components/view_manager/connection_manager.cc
index 8555200..1022048 100644
--- a/components/view_manager/connection_manager.cc
+++ b/components/view_manager/connection_manager.cc
@@ -115,20 +115,17 @@ ConnectionManager::ConnectionManager(ConnectionManagerDelegate* delegate,
: delegate_(delegate),
window_manager_client_connection_(nullptr),
next_connection_id_(1),
+ event_dispatcher_(this),
display_manager_(display_manager.Pass()),
root_(CreateServerView(RootViewId())),
current_change_(nullptr),
in_destructor_(false),
animation_runner_(base::TimeTicks::Now()),
- event_dispatcher_(this),
- event_dispatcher_binding_(&event_dispatcher_),
focus_controller_(new FocusController(this, root_.get())) {
root_->SetBounds(gfx::Rect(800, 600));
root_->SetVisible(true);
- mojo::NativeViewportEventDispatcherPtr event_dispatcher_ptr;
- event_dispatcher_binding_.Bind(GetProxy(&event_dispatcher_ptr));
- display_manager_->Init(this, event_dispatcher_ptr.Pass());
+ display_manager_->Init(this, &event_dispatcher_);
}
ConnectionManager::~ConnectionManager() {
@@ -312,7 +309,7 @@ bool ConnectionManager::CloneAndAnimate(const ViewId& view_id) {
}
void ConnectionManager::ProcessEvent(mojo::EventPtr event) {
- event_dispatcher_.OnEvent(event.Pass(), EventDispatcher::OnEventCallback());
+ event_dispatcher_.OnEvent(event.Pass());
}
void ConnectionManager::DispatchInputEventToView(const ServerView* view,
diff --git a/components/view_manager/connection_manager.h b/components/view_manager/connection_manager.h
index ee3cac1..d683428 100644
--- a/components/view_manager/connection_manager.h
+++ b/components/view_manager/connection_manager.h
@@ -15,7 +15,6 @@
#include "components/view_manager/event_dispatcher.h"
#include "components/view_manager/focus_controller_delegate.h"
#include "components/view_manager/ids.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
#include "components/view_manager/public/interfaces/view_manager.mojom.h"
#include "components/view_manager/public/interfaces/view_manager_root.mojom.h"
#include "components/view_manager/server_view_delegate.h"
@@ -253,6 +252,10 @@ class ConnectionManager : public ServerViewDelegate,
// Set of ViewManagerServiceImpls.
ConnectionMap connection_map_;
+ // DisplayManager holds a raw pointer to EventDispatcher and so it must be
+ // destroyed after DisplayManager (and thus created before).
+ EventDispatcher event_dispatcher_;
+
scoped_ptr<DisplayManager> display_manager_;
scoped_ptr<ServerView> root_;
@@ -268,10 +271,6 @@ class ConnectionManager : public ServerViewDelegate,
AnimationRunner animation_runner_;
- EventDispatcher event_dispatcher_;
-
- mojo::Binding<mojo::NativeViewportEventDispatcher> event_dispatcher_binding_;
-
scoped_ptr<FocusController> focus_controller_;
mojo::ViewManagerRootClientPtr view_manager_root_client_;
diff --git a/components/view_manager/display_manager.cc b/components/view_manager/display_manager.cc
index 55e881a..8e51e33 100644
--- a/components/view_manager/display_manager.cc
+++ b/components/view_manager/display_manager.cc
@@ -6,6 +6,8 @@
#include "base/numerics/safe_conversions.h"
#include "components/view_manager/connection_manager.h"
+#include "components/view_manager/gles2/gpu_state.h"
+#include "components/view_manager/native_viewport/onscreen_context_provider.h"
#include "components/view_manager/public/interfaces/gpu.mojom.h"
#include "components/view_manager/public/interfaces/quads.mojom.h"
#include "components/view_manager/public/interfaces/surfaces.mojom.h"
@@ -73,49 +75,57 @@ void DrawViewTree(mojo::Pass* pass,
} // namespace
DefaultDisplayManager::DefaultDisplayManager(
+ bool is_headless,
mojo::ApplicationImpl* app_impl,
- const mojo::Callback<void()>& native_viewport_closed_callback)
- : app_impl_(app_impl),
+ const scoped_refptr<gles2::GpuState>& gpu_state,
+ const mojo::Callback<void()>& platform_viewport_closed_callback)
+ : is_headless_(is_headless),
+ app_impl_(app_impl),
+ gpu_state_(gpu_state),
connection_manager_(nullptr),
+ event_dispatcher_(nullptr),
draw_timer_(false, false),
frame_pending_(false),
- native_viewport_closed_callback_(native_viewport_closed_callback),
+ context_provider_(
+ new native_viewport::OnscreenContextProvider(gpu_state)),
+ platform_viewport_closed_callback_(platform_viewport_closed_callback),
weak_factory_(this) {
- metrics_.size = mojo::Size::New();
- metrics_.size->width = 800;
- metrics_.size->height = 600;
+ metrics_.size_in_pixels = mojo::Size::New();
+ metrics_.size_in_pixels->width = 800;
+ metrics_.size_in_pixels->height = 600;
}
void DefaultDisplayManager::Init(
ConnectionManager* connection_manager,
- mojo::NativeViewportEventDispatcherPtr event_dispatcher) {
+ EventDispatcher* event_dispatcher) {
connection_manager_ = connection_manager;
- mojo::URLRequestPtr request(mojo::URLRequest::New());
- // TODO(beng): should not need to connect to ourselves, should just
- // create the appropriate platform window directly.
- request->url = mojo::String::From("mojo:view_manager");
- app_impl_->ConnectToService(request.Pass(),
- &native_viewport_);
- native_viewport_.set_error_handler(this);
- native_viewport_->Create(metrics_.size->Clone(),
- base::Bind(&DefaultDisplayManager::OnMetricsChanged,
- weak_factory_.GetWeakPtr()));
- native_viewport_->Show();
+ event_dispatcher_ = event_dispatcher;
+
+ platform_viewport_ =
+ native_viewport::PlatformViewport::Create(this, is_headless_).Pass();
+ platform_viewport_->Init(gfx::Rect(metrics_.size_in_pixels.To<gfx::Size>()));
+ platform_viewport_->Show();
mojo::ContextProviderPtr context_provider;
- native_viewport_->GetContextProvider(GetProxy(&context_provider));
+ context_provider_->Bind(GetProxy(&context_provider).Pass());
mojo::DisplayFactoryPtr display_factory;
- mojo::URLRequestPtr request2(mojo::URLRequest::New());
- request2->url = mojo::String::From("mojo:surfaces_service");
- app_impl_->ConnectToService(request2.Pass(), &display_factory);
+ mojo::URLRequestPtr request(mojo::URLRequest::New());
+ request->url = mojo::String::From("mojo:surfaces_service");
+ app_impl_->ConnectToService(request.Pass(), &display_factory);
display_factory->Create(context_provider.Pass(),
nullptr, // returner - we never submit resources.
GetProxy(&display_));
-
- native_viewport_->SetEventDispatcher(event_dispatcher.Pass());
}
DefaultDisplayManager::~DefaultDisplayManager() {
+ // Destroy before |platform_viewport_| because this will destroy
+ // CommandBufferDriver objects that contain child windows. Otherwise if this
+ // class destroys its window first, X errors will occur.
+ context_provider_.reset();
+
+ // Destroy the NativeViewport early on as it may call us back during
+ // destruction and we want to be in a known state.
+ platform_viewport_.reset();
}
void DefaultDisplayManager::SchedulePaint(const ServerView* view,
@@ -131,7 +141,7 @@ void DefaultDisplayManager::SchedulePaint(const ServerView* view,
}
void DefaultDisplayManager::SetViewportSize(const gfx::Size& size) {
- native_viewport_->SetSize(Size::From(size));
+ platform_viewport_->SetBounds(gfx::Rect(size));
}
const mojo::ViewportMetrics& DefaultDisplayManager::GetViewportMetrics() {
@@ -139,7 +149,7 @@ const mojo::ViewportMetrics& DefaultDisplayManager::GetViewportMetrics() {
}
void DefaultDisplayManager::Draw() {
- gfx::Rect rect(metrics_.size->width, metrics_.size->height);
+ gfx::Rect rect(metrics_.size_in_pixels.To<gfx::Size>());
auto pass = mojo::CreateDefaultPass(1, rect);
pass->damage_rect = Rect::From(dirty_rect_);
@@ -170,20 +180,41 @@ void DefaultDisplayManager::WantToDraw() {
base::Bind(&DefaultDisplayManager::Draw, base::Unretained(this)));
}
-void DefaultDisplayManager::OnMetricsChanged(mojo::ViewportMetricsPtr metrics) {
- metrics_.size = metrics->size.Clone();
- metrics_.device_pixel_ratio = metrics->device_pixel_ratio;
- gfx::Rect bounds(metrics_.size.To<gfx::Size>());
- connection_manager_->root()->SetBounds(bounds);
- connection_manager_->ProcessViewportMetricsChanged(metrics_, *metrics);
- native_viewport_->RequestMetrics(base::Bind(
- &DefaultDisplayManager::OnMetricsChanged, weak_factory_.GetWeakPtr()));
+void DefaultDisplayManager::OnAcceleratedWidgetAvailable(
+ gfx::AcceleratedWidget widget,
+ float device_pixel_ratio) {
+ context_provider_->SetAcceleratedWidget(widget);
+}
+
+void DefaultDisplayManager::OnAcceleratedWidgetDestroyed() {
+ context_provider_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
+}
+
+void DefaultDisplayManager::OnEvent(mojo::EventPtr event) {
+ event_dispatcher_->OnEvent(event.Pass());
+}
+
+void DefaultDisplayManager::OnMetricsChanged(const gfx::Size& size,
+ float device_scale_factor) {
+ if ((metrics_.size_in_pixels.To<gfx::Size>() == size) &&
+ (metrics_.device_pixel_ratio == device_scale_factor)) {
+ return;
+ }
+
+ mojo::ViewportMetrics metrics;
+ metrics.size_in_pixels = mojo::Size::From(size);
+ metrics.device_pixel_ratio = device_scale_factor;
+
+ connection_manager_->root()->SetBounds(gfx::Rect(size));
+ connection_manager_->ProcessViewportMetricsChanged(metrics_, metrics);
+
+ metrics_.size_in_pixels = metrics.size_in_pixels.Clone();
+ metrics_.device_pixel_ratio = metrics.device_pixel_ratio;
}
-void DefaultDisplayManager::OnConnectionError() {
- // This is called when the native_viewport is torn down before
- // ~DefaultDisplayManager may be called.
- native_viewport_closed_callback_.Run();
+void DefaultDisplayManager::OnDestroyed() {
+ if (!platform_viewport_closed_callback_.is_null())
+ platform_viewport_closed_callback_.Run();
}
} // namespace view_manager
diff --git a/components/view_manager/display_manager.h b/components/view_manager/display_manager.h
index 9bbeeca..6ba94d7 100644
--- a/components/view_manager/display_manager.h
+++ b/components/view_manager/display_manager.h
@@ -11,22 +11,31 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "base/timer/timer.h"
+#include "components/view_manager/native_viewport/platform_viewport.h"
#include "components/view_manager/public/interfaces/display.mojom.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
#include "components/view_manager/public/interfaces/view_manager.mojom.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/callback.h"
#include "ui/gfx/geometry/rect.h"
namespace cc {
class SurfaceIdAllocator;
-}
+} // namespace cc
+
+namespace gles2 {
+class GpuState;
+} // namespace gles2
+
+namespace native_viewport {
+class OnscreenContextProvider;
+} // namespace native_viewport
namespace mojo {
class ApplicationImpl;
-}
+} // namespace mojo
namespace view_manager {
+class EventDispatcher;
class ConnectionManager;
class ServerView;
@@ -37,7 +46,7 @@ class DisplayManager {
virtual void Init(
ConnectionManager* connection_manager,
- mojo::NativeViewportEventDispatcherPtr event_dispatcher) = 0;
+ EventDispatcher* event_dispatcher) = 0;
// Schedules a paint for the specified region in the coordinates of |view|.
virtual void SchedulePaint(const ServerView* view,
@@ -50,17 +59,20 @@ class DisplayManager {
// DisplayManager implementation that connects to the services necessary to
// actually display.
-class DefaultDisplayManager : public DisplayManager,
- public mojo::ErrorHandler {
+class DefaultDisplayManager :
+ public DisplayManager,
+ public native_viewport::PlatformViewport::Delegate {
public:
DefaultDisplayManager(
+ bool is_headless,
mojo::ApplicationImpl* app_impl,
- const mojo::Callback<void()>& native_viewport_closed_callback);
+ const scoped_refptr<gles2::GpuState>& gpu_state,
+ const mojo::Callback<void()>& platform_viewport_closed_callback);
~DefaultDisplayManager() override;
// DisplayManager:
void Init(ConnectionManager* connection_manager,
- mojo::NativeViewportEventDispatcherPtr event_dispatcher) override;
+ EventDispatcher* event_dispatcher) override;
void SchedulePaint(const ServerView* view, const gfx::Rect& bounds) override;
void SetViewportSize(const gfx::Size& size) override;
const mojo::ViewportMetrics& GetViewportMetrics() override;
@@ -70,13 +82,20 @@ class DefaultDisplayManager : public DisplayManager,
void Draw();
void DidDraw();
- void OnMetricsChanged(mojo::ViewportMetricsPtr metrics);
-
- // ErrorHandler:
- void OnConnectionError() override;
+ // PlatformViewport::Delegate implementation:
+ void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget,
+ float device_pixel_ratio) override;
+ void OnAcceleratedWidgetDestroyed() override;
+ void OnEvent(mojo::EventPtr event) override;
+ void OnMetricsChanged(const gfx::Size& size,
+ float device_scale_factor) override;
+ void OnDestroyed() override;
+ bool is_headless_;
mojo::ApplicationImpl* app_impl_;
+ scoped_refptr<gles2::GpuState> gpu_state_;
ConnectionManager* connection_manager_;
+ EventDispatcher* event_dispatcher_;
mojo::ViewportMetrics metrics_;
gfx::Rect dirty_rect_;
@@ -84,8 +103,10 @@ class DefaultDisplayManager : public DisplayManager,
bool frame_pending_;
mojo::DisplayPtr display_;
- mojo::NativeViewportPtr native_viewport_;
- mojo::Callback<void()> native_viewport_closed_callback_;
+ scoped_ptr<native_viewport::OnscreenContextProvider> context_provider_;
+ scoped_ptr<native_viewport::PlatformViewport> platform_viewport_;
+ mojo::Callback<void()> platform_viewport_closed_callback_;
+
base::WeakPtrFactory<DefaultDisplayManager> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(DefaultDisplayManager);
diff --git a/components/view_manager/event_dispatcher.cc b/components/view_manager/event_dispatcher.cc
index a06e7c2..edc2bc5 100644
--- a/components/view_manager/event_dispatcher.cc
+++ b/components/view_manager/event_dispatcher.cc
@@ -30,15 +30,11 @@ void EventDispatcher::RemoveAccelerator(mojo::KeyboardCode keyboard_code,
accelerators_.erase(Accelerator(keyboard_code, flags));
}
-void EventDispatcher::OnEvent(mojo::EventPtr event,
- const OnEventCallback& callback) {
- callback.Run();
-
+void EventDispatcher::OnEvent(mojo::EventPtr event) {
if (event->pointer_data) {
const gfx::Point root_point(static_cast<int>(event->pointer_data->x),
static_cast<int>(event->pointer_data->y));
ServerView* target = connection_manager_->GetFocusedView();
- ;
if (event->action == mojo::EVENT_TYPE_POINTER_DOWN || !target) {
target = FindDeepestVisibleView(connection_manager_->root(), root_point);
CHECK(target);
diff --git a/components/view_manager/event_dispatcher.h b/components/view_manager/event_dispatcher.h
index 9716f06..a2d4514 100644
--- a/components/view_manager/event_dispatcher.h
+++ b/components/view_manager/event_dispatcher.h
@@ -8,24 +8,25 @@
#include <set>
#include "base/basictypes.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
+#include "ui/mojo/events/input_event_constants.mojom.h"
+#include "ui/mojo/events/input_events.mojom.h"
+#include "ui/mojo/events/input_key_codes.mojom.h"
namespace view_manager {
class ConnectionManager;
// Handles dispatching events to the right location as well as updating focus.
-class EventDispatcher : public mojo::NativeViewportEventDispatcher {
+class EventDispatcher {
public:
explicit EventDispatcher(ConnectionManager* connection_manager);
- ~EventDispatcher() override;
+ ~EventDispatcher();
void AddAccelerator(mojo::KeyboardCode keyboard_code, mojo::EventFlags flags);
void RemoveAccelerator(mojo::KeyboardCode keyboard_code,
mojo::EventFlags flags);
- // NativeViewportEventDispatcher:
- void OnEvent(mojo::EventPtr event, const OnEventCallback& callback) override;
+ void OnEvent(mojo::EventPtr event);
private:
struct Accelerator {
diff --git a/components/view_manager/native_viewport/BUILD.gn b/components/view_manager/native_viewport/BUILD.gn
index 1201bd4..123e40e 100644
--- a/components/view_manager/native_viewport/BUILD.gn
+++ b/components/view_manager/native_viewport/BUILD.gn
@@ -7,8 +7,6 @@ import("//third_party/mojo/src/mojo/public/mojo_application.gni")
source_set("native_viewport") {
sources = [
- "native_viewport_impl.cc",
- "native_viewport_impl.h",
"onscreen_context_provider.cc",
"onscreen_context_provider.h",
"platform_viewport.h",
diff --git a/components/view_manager/native_viewport/native_viewport_impl.cc b/components/view_manager/native_viewport/native_viewport_impl.cc
deleted file mode 100644
index e990cbd..0000000
--- a/components/view_manager/native_viewport/native_viewport_impl.cc
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright 2014 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/view_manager/native_viewport/native_viewport_impl.h"
-
-#include "base/auto_reset.h"
-#include "base/bind.h"
-#include "base/macros.h"
-#include "base/message_loop/message_loop.h"
-#include "base/time/time.h"
-#include "components/view_manager/gles2/gpu_state.h"
-#include "components/view_manager/native_viewport/platform_viewport_headless.h"
-#include "mojo/application/public/cpp/interface_factory.h"
-#include "mojo/converters/geometry/geometry_type_converters.h"
-#include "ui/events/event.h"
-
-namespace native_viewport {
-
-NativeViewportImpl::NativeViewportImpl(
- bool is_headless,
- const scoped_refptr<gles2::GpuState>& gpu_state,
- mojo::InterfaceRequest<mojo::NativeViewport> request,
- scoped_ptr<mojo::AppRefCount> app_refcount)
- : is_headless_(is_headless),
- app_refcount_(app_refcount.Pass()),
- context_provider_(new OnscreenContextProvider(gpu_state)),
- sent_metrics_(false),
- metrics_(mojo::ViewportMetrics::New()),
- binding_(this, request.Pass()),
- weak_factory_(this) {
-}
-
-NativeViewportImpl::~NativeViewportImpl() {
- // Destroy before |platform_viewport_| because this will destroy
- // CommandBufferDriver objects that contain child windows. Otherwise if this
- // class destroys its window first, X errors will occur.
- context_provider_.reset();
-
- // Destroy the NativeViewport early on as it may call us back during
- // destruction and we want to be in a known state.
- platform_viewport_.reset();
-}
-
-void NativeViewportImpl::Create(mojo::SizePtr size,
- const CreateCallback& callback) {
- create_callback_ = callback;
- metrics_->size = size.Clone();
- if (is_headless_)
- platform_viewport_ = PlatformViewportHeadless::Create(this);
- else
- platform_viewport_ = PlatformViewport::Create(this);
- platform_viewport_->Init(gfx::Rect(size.To<gfx::Size>()));
-}
-
-void NativeViewportImpl::RequestMetrics(
- const RequestMetricsCallback& callback) {
- if (!sent_metrics_) {
- callback.Run(metrics_.Clone());
- sent_metrics_ = true;
- return;
- }
- metrics_callback_ = callback;
-}
-
-void NativeViewportImpl::Show() {
- platform_viewport_->Show();
-}
-
-void NativeViewportImpl::Hide() {
- platform_viewport_->Hide();
-}
-
-void NativeViewportImpl::Close() {
- DCHECK(platform_viewport_);
- platform_viewport_->Close();
-}
-
-void NativeViewportImpl::SetSize(mojo::SizePtr size) {
- platform_viewport_->SetBounds(gfx::Rect(size.To<gfx::Size>()));
-}
-
-void NativeViewportImpl::GetContextProvider(
- mojo::InterfaceRequest<mojo::ContextProvider> request) {
- context_provider_->Bind(request.Pass());
-}
-
-void NativeViewportImpl::SetEventDispatcher(
- mojo::NativeViewportEventDispatcherPtr dispatcher) {
- event_dispatcher_ = dispatcher.Pass();
-}
-
-void NativeViewportImpl::OnMetricsChanged(mojo::ViewportMetricsPtr metrics) {
- if (metrics_->Equals(*metrics))
- return;
-
- metrics_ = metrics.Pass();
- sent_metrics_ = false;
-
- if (!metrics_callback_.is_null()) {
- metrics_callback_.Run(metrics_.Clone());
- metrics_callback_.reset();
- sent_metrics_ = true;
- }
-}
-
-void NativeViewportImpl::OnAcceleratedWidgetAvailable(
- gfx::AcceleratedWidget widget,
- float device_pixel_ratio) {
- metrics_->device_pixel_ratio = device_pixel_ratio;
- context_provider_->SetAcceleratedWidget(widget);
- // TODO: The metrics here might not match the actual window size on android
- // where we don't know the actual size until the first OnMetricsChanged call.
- create_callback_.Run(metrics_.Clone());
- sent_metrics_ = true;
- create_callback_.reset();
-}
-
-void NativeViewportImpl::OnAcceleratedWidgetDestroyed() {
- context_provider_->SetAcceleratedWidget(gfx::kNullAcceleratedWidget);
-}
-
-bool NativeViewportImpl::OnEvent(mojo::EventPtr event) {
- if (event.is_null() || !event_dispatcher_.get())
- return false;
-
- mojo::NativeViewportEventDispatcher::OnEventCallback callback;
- switch (event->action) {
- case mojo::EVENT_TYPE_POINTER_MOVE: {
- // TODO(sky): add logic to remember last event location and not send if
- // the same.
- if (pointers_waiting_on_ack_.count(event->pointer_data->pointer_id))
- return false;
-
- pointers_waiting_on_ack_.insert(event->pointer_data->pointer_id);
- callback =
- base::Bind(&NativeViewportImpl::AckEvent, weak_factory_.GetWeakPtr(),
- event->pointer_data->pointer_id);
- break;
- }
-
- case mojo::EVENT_TYPE_POINTER_CANCEL:
- pointers_waiting_on_ack_.clear();
- break;
-
- case mojo::EVENT_TYPE_POINTER_UP:
- pointers_waiting_on_ack_.erase(event->pointer_data->pointer_id);
- break;
-
- default:
- break;
- }
-
- event_dispatcher_->OnEvent(event.Pass(), callback);
- return false;
-}
-
-void NativeViewportImpl::OnDestroyed() {
- delete this;
-}
-
-void NativeViewportImpl::AckEvent(int32 pointer_id) {
- pointers_waiting_on_ack_.erase(pointer_id);
-}
-
-} // namespace native_viewport
diff --git a/components/view_manager/native_viewport/native_viewport_impl.h b/components/view_manager/native_viewport/native_viewport_impl.h
deleted file mode 100644
index 2c21b14..0000000
--- a/components/view_manager/native_viewport/native_viewport_impl.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2014 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_VIEW_MANAGER_NATIVE_VIEWPORT_NATIVE_VIEWPORT_IMPL_H_
-#define COMPONENTS_VIEW_MANAGER_NATIVE_VIEWPORT_NATIVE_VIEWPORT_IMPL_H_
-
-#include <set>
-
-#include "base/macros.h"
-#include "base/memory/weak_ptr.h"
-#include "components/view_manager/native_viewport/onscreen_context_provider.h"
-#include "components/view_manager/native_viewport/platform_viewport.h"
-#include "components/view_manager/public/interfaces/gpu.mojom.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
-#include "mojo/application/public/cpp/app_lifetime_helper.h"
-#include "third_party/mojo/src/mojo/public/cpp/bindings/strong_binding.h"
-#include "ui/gfx/geometry/rect.h"
-
-namespace gles2 {
-class GpuState;
-}
-
-namespace ui {
-class Event;
-}
-
-namespace native_viewport {
-
-// A NativeViewportImpl is bound to a message pipe and to a PlatformViewport.
-// The NativeViewportImpl's lifetime ends when either the message pipe is closed
-// or the PlatformViewport informs the NativeViewportImpl that it has been
-// destroyed.
-class NativeViewportImpl : public mojo::NativeViewport,
- public PlatformViewport::Delegate {
- public:
- NativeViewportImpl(bool is_headless,
- const scoped_refptr<gles2::GpuState>& gpu_state,
- mojo::InterfaceRequest<mojo::NativeViewport> request,
- scoped_ptr<mojo::AppRefCount> app_refcount);
- ~NativeViewportImpl() override;
-
- // NativeViewport implementation.
- void Create(mojo::SizePtr size, const CreateCallback& callback) override;
- void RequestMetrics(const RequestMetricsCallback& callback) override;
- void Show() override;
- void Hide() override;
- void Close() override;
- void SetSize(mojo::SizePtr size) override;
- void GetContextProvider(
- mojo::InterfaceRequest<mojo::ContextProvider> request) override;
- void SetEventDispatcher(
- mojo::NativeViewportEventDispatcherPtr dispatcher) override;
-
- // PlatformViewport::Delegate implementation.
- void OnMetricsChanged(mojo::ViewportMetricsPtr metrics) override;
- void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget,
- float device_pixel_ratio) override;
- void OnAcceleratedWidgetDestroyed() override;
- bool OnEvent(mojo::EventPtr event) override;
- void OnDestroyed() override;
-
- private:
- // Callback when the dispatcher has processed a message we're waiting on
- // an ack from. |pointer_id| identifies the pointer the message was associated
- // with.
- void AckEvent(int32 pointer_id);
-
- bool is_headless_;
- scoped_ptr<mojo::AppRefCount> app_refcount_;
- scoped_ptr<PlatformViewport> platform_viewport_;
- scoped_ptr<OnscreenContextProvider> context_provider_;
- bool sent_metrics_;
- mojo::ViewportMetricsPtr metrics_;
- CreateCallback create_callback_;
- RequestMetricsCallback metrics_callback_;
- mojo::NativeViewportEventDispatcherPtr event_dispatcher_;
- mojo::StrongBinding<mojo::NativeViewport> binding_;
-
- // Set of pointer_ids we've sent a move to and are waiting on an ack.
- std::set<int32> pointers_waiting_on_ack_;
-
- base::WeakPtrFactory<NativeViewportImpl> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(NativeViewportImpl);
-};
-
-} // namespace native_viewport
-
-#endif // COMPONENTS_VIEW_MANAGER_NATIVE_VIEWPORT_NATIVE_VIEWPORT_IMPL_H_
diff --git a/components/view_manager/native_viewport/platform_viewport.h b/components/view_manager/native_viewport/platform_viewport.h
index 6bc62ca..f57adb9 100644
--- a/components/view_manager/native_viewport/platform_viewport.h
+++ b/components/view_manager/native_viewport/platform_viewport.h
@@ -6,7 +6,6 @@
#define COMPONENTS_VIEW_MANAGER_NATIVE_VIEWPORT_PLATFORM_VIEWPORT_H_
#include "base/memory/scoped_ptr.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/native_widget_types.h"
#include "ui/mojo/events/input_events.mojom.h"
@@ -24,12 +23,13 @@ class PlatformViewport {
public:
virtual ~Delegate() {}
- virtual void OnMetricsChanged(mojo::ViewportMetricsPtr metrics) = 0;
virtual void OnAcceleratedWidgetAvailable(gfx::AcceleratedWidget widget,
float device_pixel_ratio) = 0;
virtual void OnAcceleratedWidgetDestroyed() = 0;
- virtual bool OnEvent(mojo::EventPtr event) = 0;
virtual void OnDestroyed() = 0;
+ virtual void OnEvent(mojo::EventPtr event) = 0;
+ virtual void OnMetricsChanged(const gfx::Size& size,
+ float device_scale_factor) = 0;
};
virtual ~PlatformViewport() {}
@@ -41,7 +41,7 @@ class PlatformViewport {
virtual gfx::Size GetSize() = 0;
virtual void SetBounds(const gfx::Rect& bounds) = 0;
- static scoped_ptr<PlatformViewport> Create(Delegate* delegate);
+ static scoped_ptr<PlatformViewport> Create(Delegate* delegate, bool headless);
};
} // namespace native_viewport
diff --git a/components/view_manager/native_viewport/platform_viewport_android.cc b/components/view_manager/native_viewport/platform_viewport_android.cc
index ccca113..f5d47be 100644
--- a/components/view_manager/native_viewport/platform_viewport_android.cc
+++ b/components/view_manager/native_viewport/platform_viewport_android.cc
@@ -8,6 +8,7 @@
#include <android/native_window_jni.h>
#include "base/android/jni_android.h"
+#include "components/view_manager/native_viewport/platform_viewport_headless.h"
#include "jni/PlatformViewportAndroid_jni.h"
#include "mojo/converters/geometry/geometry_type_converters.h"
#include "mojo/converters/input_events/input_events_type_converters.h"
@@ -98,12 +99,8 @@ void PlatformViewportAndroid::SurfaceSetSize(JNIEnv* env,
jint width,
jint height,
jfloat density) {
- metrics_ = mojo::ViewportMetrics::New();
- metrics_->size = mojo::Size::New();
- metrics_->size->width = static_cast<int>(width);
- metrics_->size->height = static_cast<int>(height);
- metrics_->device_pixel_ratio = density;
- delegate_->OnMetricsChanged(metrics_.Clone());
+ size_ = gfx::Size(static_cast<int>(width), static_cast<int>(height));
+ delegate_->OnMetricsChanged(size_, density);
}
bool PlatformViewportAndroid::TouchEvent(JNIEnv* env,
@@ -189,7 +186,7 @@ void PlatformViewportAndroid::Close() {
}
gfx::Size PlatformViewportAndroid::GetSize() {
- return metrics_->size.To<gfx::Size>();
+ return size_;
}
void PlatformViewportAndroid::SetBounds(const gfx::Rect& bounds) {
@@ -208,7 +205,11 @@ void PlatformViewportAndroid::ReleaseWindow() {
// PlatformViewport, public:
// static
-scoped_ptr<PlatformViewport> PlatformViewport::Create(Delegate* delegate) {
+scoped_ptr<PlatformViewport> PlatformViewport::Create(Delegate* delegate,
+ bool headless) {
+ if (headless)
+ return PlatformViewportHeadless::Create(delegate);
+
return scoped_ptr<PlatformViewport>(
new PlatformViewportAndroid(delegate)).Pass();
}
diff --git a/components/view_manager/native_viewport/platform_viewport_android.h b/components/view_manager/native_viewport/platform_viewport_android.h
index 467614b..3eba7cc 100644
--- a/components/view_manager/native_viewport/platform_viewport_android.h
+++ b/components/view_manager/native_viewport/platform_viewport_android.h
@@ -73,9 +73,10 @@ class PlatformViewportAndroid : public PlatformViewport {
Delegate* const delegate_;
JavaObjectWeakGlobalRef java_platform_viewport_android_;
ANativeWindow* window_;
- mojo::ViewportMetricsPtr metrics_;
ui::SequentialIDGenerator id_generator_;
+ gfx::Size size_;
+
base::WeakPtrFactory<PlatformViewportAndroid> weak_factory_;
DISALLOW_COPY_AND_ASSIGN(PlatformViewportAndroid);
diff --git a/components/view_manager/native_viewport/platform_viewport_headless.cc b/components/view_manager/native_viewport/platform_viewport_headless.cc
index 3918b18..a758a50 100644
--- a/components/view_manager/native_viewport/platform_viewport_headless.cc
+++ b/components/view_manager/native_viewport/platform_viewport_headless.cc
@@ -18,7 +18,7 @@ PlatformViewportHeadless::~PlatformViewportHeadless() {
void PlatformViewportHeadless::Init(const gfx::Rect& bounds) {
metrics_ = mojo::ViewportMetrics::New();
metrics_->device_pixel_ratio = 1.f;
- metrics_->size = mojo::Size::From(bounds.size());
+ metrics_->size_in_pixels = mojo::Size::From(bounds.size());
}
void PlatformViewportHeadless::Show() {
@@ -32,12 +32,11 @@ void PlatformViewportHeadless::Close() {
}
gfx::Size PlatformViewportHeadless::GetSize() {
- return metrics_->size.To<gfx::Size>();
+ return metrics_->size_in_pixels.To<gfx::Size>();
}
void PlatformViewportHeadless::SetBounds(const gfx::Rect& bounds) {
- metrics_->size = mojo::Size::From(bounds.size());
- delegate_->OnMetricsChanged(metrics_->Clone());
+ delegate_->OnMetricsChanged(bounds.size(), 1.f /* device_scale_factor */);
}
// static
diff --git a/components/view_manager/native_viewport/platform_viewport_headless.h b/components/view_manager/native_viewport/platform_viewport_headless.h
index 949bc31..924f3a5 100644
--- a/components/view_manager/native_viewport/platform_viewport_headless.h
+++ b/components/view_manager/native_viewport/platform_viewport_headless.h
@@ -7,6 +7,7 @@
#include "base/macros.h"
#include "components/view_manager/native_viewport/platform_viewport.h"
+#include "components/view_manager/public/interfaces/view_manager.mojom.h"
#include "ui/gfx/geometry/rect.h"
namespace native_viewport {
diff --git a/components/view_manager/native_viewport/platform_viewport_win.cc b/components/view_manager/native_viewport/platform_viewport_win.cc
index 465d828..a5beb9c 100644
--- a/components/view_manager/native_viewport/platform_viewport_win.cc
+++ b/components/view_manager/native_viewport/platform_viewport_win.cc
@@ -5,6 +5,8 @@
#include "components/view_manager/native_viewport/platform_viewport.h"
#include "base/memory/scoped_ptr.h"
+#include "components/view_manager/native_viewport/platform_viewport_headless.h"
+#include "components/view_manager/public/interfaces/view_manager.mojom.h"
#include "mojo/converters/geometry/geometry_type_converters.h"
#include "mojo/converters/input_events/input_events_type_converters.h"
#include "ui/events/event.h"
@@ -42,7 +44,7 @@ class PlatformViewportWin : public PlatformViewport,
metrics_ = mojo::ViewportMetrics::New();
// TODO(sky): make density real.
metrics_->device_pixel_ratio = 1.f;
- metrics_->size = mojo::Size::From(bounds.size());
+ metrics_->size_in_pixels = mojo::Size::From(bounds.size());
platform_window_.reset(new ui::WinWindow(this, bounds));
}
@@ -58,7 +60,9 @@ class PlatformViewportWin : public PlatformViewport,
platform_window_->Close();
}
- gfx::Size GetSize() override { return metrics_->size.To<gfx::Size>(); }
+ gfx::Size GetSize() override {
+ return metrics_->size_in_pixels.To<gfx::Size>();
+ }
void SetBounds(const gfx::Rect& bounds) override {
platform_window_->SetBounds(bounds);
@@ -66,8 +70,9 @@ class PlatformViewportWin : public PlatformViewport,
// ui::PlatformWindowDelegate:
void OnBoundsChanged(const gfx::Rect& new_bounds) override {
- metrics_->size = mojo::Size::From(new_bounds.size());
- delegate_->OnMetricsChanged(metrics_.Clone());
+ // TODO(fsamuel): Use the real device_scale_factor.
+ delegate_->OnMetricsChanged(new_bounds.size(),
+ 1.f /* device_scale_factor */);
}
void OnDamageRect(const gfx::Rect& damaged_region) override {
@@ -133,8 +138,11 @@ class PlatformViewportWin : public PlatformViewport,
};
// static
-scoped_ptr<PlatformViewport> PlatformViewport::Create(Delegate* delegate) {
- return scoped_ptr<PlatformViewport>(new PlatformViewportWin(delegate)).Pass();
+scoped_ptr<PlatformViewport> PlatformViewport::Create(Delegate* delegate,
+ bool headless) {
+ if (headless)
+ return PlatformViewportHeadless::Create(delegate);
+ return make_scoped_ptr(new PlatformViewportWin(delegate));
}
} // namespace native_viewport
diff --git a/components/view_manager/native_viewport/platform_viewport_x11.cc b/components/view_manager/native_viewport/platform_viewport_x11.cc
index d0f6976..c661fb5 100644
--- a/components/view_manager/native_viewport/platform_viewport_x11.cc
+++ b/components/view_manager/native_viewport/platform_viewport_x11.cc
@@ -6,6 +6,8 @@
#include "base/command_line.h"
#include "base/message_loop/message_loop.h"
+#include "components/view_manager/native_viewport/platform_viewport_headless.h"
+#include "components/view_manager/public/interfaces/view_manager.mojom.h"
#include "mojo/converters/geometry/geometry_type_converters.h"
#include "mojo/converters/input_events/input_events_type_converters.h"
#include "mojo/converters/input_events/mojo_extended_key_event_data.h"
@@ -49,7 +51,7 @@ class PlatformViewportX11 : public PlatformViewport,
metrics_ = mojo::ViewportMetrics::New();
// TODO(sky): make density real.
metrics_->device_pixel_ratio = 1.f;
- metrics_->size = mojo::Size::From(bounds.size());
+ metrics_->size_in_pixels = mojo::Size::From(bounds.size());
platform_window_.reset(new ui::X11Window(this));
platform_window_->SetBounds(bounds);
@@ -61,7 +63,9 @@ class PlatformViewportX11 : public PlatformViewport,
void Close() override { platform_window_->Close(); }
- gfx::Size GetSize() override { return metrics_->size.To<gfx::Size>(); }
+ gfx::Size GetSize() override {
+ return metrics_->size_in_pixels.To<gfx::Size>();
+ }
void SetBounds(const gfx::Rect& bounds) override {
platform_window_->SetBounds(bounds);
@@ -69,8 +73,9 @@ class PlatformViewportX11 : public PlatformViewport,
// ui::PlatformWindowDelegate:
void OnBoundsChanged(const gfx::Rect& new_bounds) override {
- metrics_->size = mojo::Size::From(new_bounds.size());
- delegate_->OnMetricsChanged(metrics_.Clone());
+ // TODO(fsamuel): Use the real device_scale_factor.
+ delegate_->OnMetricsChanged(new_bounds.size(),
+ 1.f /* device_scale_factor */);
}
void OnDamageRect(const gfx::Rect& damaged_region) override {}
@@ -158,7 +163,10 @@ class PlatformViewportX11 : public PlatformViewport,
};
// static
-scoped_ptr<PlatformViewport> PlatformViewport::Create(Delegate* delegate) {
+scoped_ptr<PlatformViewport> PlatformViewport::Create(Delegate* delegate,
+ bool headless) {
+ if (headless)
+ return PlatformViewportHeadless::Create(delegate);
return make_scoped_ptr(new PlatformViewportX11(delegate));
}
diff --git a/components/view_manager/public/cpp/lib/view.cc b/components/view_manager/public/cpp/lib/view.cc
index cc78b6c..3497dfa 100644
--- a/components/view_manager/public/cpp/lib/view.cc
+++ b/components/view_manager/public/cpp/lib/view.cc
@@ -399,7 +399,7 @@ namespace {
ViewportMetricsPtr CreateEmptyViewportMetrics() {
ViewportMetricsPtr metrics = ViewportMetrics::New();
- metrics->size = Size::New();
+ metrics->size_in_pixels = Size::New();
// TODO(vtl): The |.Pass()| below is only needed due to an MSVS bug; remove it
// once that's fixed.
return metrics.Pass();
diff --git a/components/view_manager/public/interfaces/BUILD.gn b/components/view_manager/public/interfaces/BUILD.gn
index 88330c4..09afdb9 100644
--- a/components/view_manager/public/interfaces/BUILD.gn
+++ b/components/view_manager/public/interfaces/BUILD.gn
@@ -13,7 +13,6 @@ mojom("interfaces") {
"display.mojom",
"gpu.mojom",
"gpu_capabilities.mojom",
- "native_viewport.mojom",
"quads.mojom",
"surface_id.mojom",
"surfaces.mojom",
diff --git a/components/view_manager/public/interfaces/native_viewport.mojom b/components/view_manager/public/interfaces/native_viewport.mojom
deleted file mode 100644
index 220fc53..0000000
--- a/components/view_manager/public/interfaces/native_viewport.mojom
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2014 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.
-
-module mojo;
-
-import "components/view_manager/public/interfaces/context_provider.mojom";
-import "ui/mojo/geometry/geometry.mojom";
-import "ui/mojo/events/input_events.mojom";
-
-struct ViewportMetrics {
- Size size;
- // A value of 0 indicates the real value is not yet available.
- float device_pixel_ratio = 0.0;
-};
-
-interface NativeViewport {
- // TODO(sky): having a create function is awkward. Should there be a factory
- // to create the NativeViewport that takes the size?
- Create(Size size) => (ViewportMetrics metrics);
-
- Show();
- Hide();
- Close();
- SetSize(Size size);
- SetEventDispatcher(NativeViewportEventDispatcher dispatcher);
-
- // Requests a ContextProvider capable of producing contexts that draw to
- // this native viewport.
- GetContextProvider(ContextProvider& provider);
-
- // The initial viewport metrics will be sent in the reply to the Create
- // method. Call RequestMetrics() to receive updates when the viewport metrics
- // change. The reply will be sent when the viewport metrics are different from
- // the values last sent, so to receive continuous updates call this method
- // again after receiving the callback.
- RequestMetrics() => (ViewportMetrics metrics);
-};
-
-interface NativeViewportEventDispatcher {
- OnEvent(Event event) => ();
-};
diff --git a/components/view_manager/public/interfaces/view_manager.mojom b/components/view_manager/public/interfaces/view_manager.mojom
index a20533f..70afc08 100644
--- a/components/view_manager/public/interfaces/view_manager.mojom
+++ b/components/view_manager/public/interfaces/view_manager.mojom
@@ -5,13 +5,18 @@
module mojo;
import "components/view_manager/public/interfaces/surface_id.mojom";
-import "components/view_manager/public/interfaces/native_viewport.mojom";
import "components/view_manager/public/interfaces/view_manager_constants.mojom";
import "mojo/application/public/interfaces/service_provider.mojom";
import "network/public/interfaces/url_loader.mojom";
import "ui/mojo/events/input_events.mojom";
import "ui/mojo/geometry/geometry.mojom";
+struct ViewportMetrics {
+ Size size_in_pixels;
+ // A value of 0 indicates the real value is not yet available.
+ float device_pixel_ratio = 0.0;
+};
+
struct ViewData {
uint32 parent_id;
uint32 view_id;
diff --git a/components/view_manager/view_manager_app.cc b/components/view_manager/view_manager_app.cc
index 75ffcde..0dac932 100644
--- a/components/view_manager/view_manager_app.cc
+++ b/components/view_manager/view_manager_app.cc
@@ -8,7 +8,6 @@
#include "components/view_manager/client_connection.h"
#include "components/view_manager/connection_manager.h"
#include "components/view_manager/display_manager.h"
-#include "components/view_manager/native_viewport/native_viewport_impl.h"
#include "components/view_manager/public/cpp/args.h"
#include "components/view_manager/view_manager_service_impl.h"
#include "mojo/application/public/cpp/application_connection.h"
@@ -24,7 +23,6 @@ using mojo::ApplicationConnection;
using mojo::ApplicationImpl;
using mojo::Gpu;
using mojo::InterfaceRequest;
-using mojo::NativeViewport;
using mojo::ViewManagerRoot;
using mojo::ViewManagerService;
@@ -39,12 +37,6 @@ void ViewManagerApp::Initialize(ApplicationImpl* app) {
app_impl_ = app;
tracing_.Initialize(app);
- scoped_ptr<DefaultDisplayManager> display_manager(new DefaultDisplayManager(
- app_impl_, base::Bind(&ViewManagerApp::OnLostConnectionToWindowManager,
- base::Unretained(this))));
- connection_manager_.reset(
- new ConnectionManager(this, display_manager.Pass()));
-
#if !defined(OS_ANDROID)
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
is_headless_ = command_line->HasSwitch(mojo::kUseHeadlessConfig);
@@ -56,6 +48,17 @@ void ViewManagerApp::Initialize(ApplicationImpl* app) {
gfx::GLSurface::InitializeOneOff();
}
#endif
+
+ if (!gpu_state_.get())
+ gpu_state_ = new gles2::GpuState;
+ scoped_ptr<DefaultDisplayManager> display_manager(new DefaultDisplayManager(
+ is_headless_,
+ app_impl_,
+ gpu_state_,
+ base::Bind(&ViewManagerApp::OnLostConnectionToWindowManager,
+ base::Unretained(this))));
+ connection_manager_.reset(
+ new ConnectionManager(this, display_manager.Pass()));
}
bool ViewManagerApp::ConfigureIncomingConnection(
@@ -65,7 +68,6 @@ bool ViewManagerApp::ConfigureIncomingConnection(
// to the ViewManager.
connection->AddService<ViewManagerService>(this);
connection->AddService<ViewManagerRoot>(this);
- connection->AddService<NativeViewport>(this);
connection->AddService<Gpu>(this);
return true;
@@ -141,18 +143,6 @@ void ViewManagerApp::Create(ApplicationConnection* connection,
void ViewManagerApp::Create(
mojo::ApplicationConnection* connection,
- mojo::InterfaceRequest<NativeViewport> request) {
- if (!gpu_state_.get())
- gpu_state_ = new gles2::GpuState;
- new native_viewport::NativeViewportImpl(
- is_headless_,
- gpu_state_,
- request.Pass(),
- app_impl_->app_lifetime_helper()->CreateAppRefCount());
-}
-
-void ViewManagerApp::Create(
- mojo::ApplicationConnection* connection,
mojo::InterfaceRequest<Gpu> request) {
if (!gpu_state_.get())
gpu_state_ = new gles2::GpuState;
diff --git a/components/view_manager/view_manager_app.h b/components/view_manager/view_manager_app.h
index 1a39c28..a2fa9dd 100644
--- a/components/view_manager/view_manager_app.h
+++ b/components/view_manager/view_manager_app.h
@@ -8,7 +8,6 @@
#include "base/memory/scoped_ptr.h"
#include "components/view_manager/connection_manager_delegate.h"
#include "components/view_manager/gles2/gpu_impl.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
#include "components/view_manager/public/interfaces/view_manager.mojom.h"
#include "components/view_manager/public/interfaces/view_manager_root.mojom.h"
#include "mojo/application/public/cpp/app_lifetime_helper.h"
@@ -33,7 +32,6 @@ class ViewManagerApp : public mojo::ApplicationDelegate,
public mojo::ErrorHandler,
public mojo::InterfaceFactory<mojo::ViewManagerRoot>,
public mojo::InterfaceFactory<mojo::ViewManagerService>,
- public mojo::InterfaceFactory<mojo::NativeViewport>,
public mojo::InterfaceFactory<mojo::Gpu> {
public:
ViewManagerApp();
@@ -71,10 +69,6 @@ class ViewManagerApp : public mojo::ApplicationDelegate,
void Create(mojo::ApplicationConnection* connection,
mojo::InterfaceRequest<mojo::ViewManagerRoot> request) override;
- // mojo::InterfaceFactory<mojo::NativeViewport> implementation.
- void Create(mojo::ApplicationConnection* connection,
- mojo::InterfaceRequest<mojo::NativeViewport> request) override;
-
// mojo::InterfaceFactory<mojo::Gpu> implementation.
void Create(mojo::ApplicationConnection* connection,
mojo::InterfaceRequest<mojo::Gpu> request) override;
diff --git a/components/view_manager/view_manager_service_unittest.cc b/components/view_manager/view_manager_service_unittest.cc
index 970b47e..6166449 100644
--- a/components/view_manager/view_manager_service_unittest.cc
+++ b/components/view_manager/view_manager_service_unittest.cc
@@ -184,7 +184,7 @@ class TestDisplayManager : public DisplayManager {
// DisplayManager:
void Init(ConnectionManager* connection_manager,
- mojo::NativeViewportEventDispatcherPtr event_dispatcher) override {}
+ EventDispatcher* event_dispatcher) override {}
void SchedulePaint(const ServerView* view, const gfx::Rect& bounds) override {
}
void SetViewportSize(const gfx::Size& size) override {}
diff --git a/mojo/runner/android/native_viewport_application_loader.cc b/mojo/runner/android/native_viewport_application_loader.cc
deleted file mode 100644
index 55979c7..0000000
--- a/mojo/runner/android/native_viewport_application_loader.cc
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2014 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 "mojo/runner/android/native_viewport_application_loader.h"
-
-#include "components/view_manager/gles2/gpu_state.h"
-#include "components/view_manager/native_viewport/native_viewport_impl.h"
-#include "mojo/application/public/cpp/application_impl.h"
-
-namespace mojo {
-namespace runner {
-
-NativeViewportApplicationLoader::NativeViewportApplicationLoader() {
-}
-
-NativeViewportApplicationLoader::~NativeViewportApplicationLoader() {
-}
-
-void NativeViewportApplicationLoader::Load(
- const GURL& url,
- InterfaceRequest<Application> application_request) {
- DCHECK(application_request.is_pending());
- app_.reset(new ApplicationImpl(this, application_request.Pass()));
-}
-
-bool NativeViewportApplicationLoader::ConfigureIncomingConnection(
- ApplicationConnection* connection) {
- connection->AddService<NativeViewport>(this);
- connection->AddService<Gpu>(this);
- return true;
-}
-
-void NativeViewportApplicationLoader::Create(
- ApplicationConnection* connection,
- InterfaceRequest<NativeViewport> request) {
- if (!gpu_state_)
- gpu_state_ = new gles2::GpuState;
- // Pass a null AppRefCount because on Android the NativeViewPort app must
- // live on the main thread and we don't want to exit that when all the native
- // viewports are gone.
- new native_viewport::NativeViewportImpl(
- false, gpu_state_, request.Pass(),
- make_scoped_ptr<mojo::AppRefCount>(nullptr));
-}
-
-void NativeViewportApplicationLoader::Create(ApplicationConnection* connection,
- InterfaceRequest<Gpu> request) {
- if (!gpu_state_)
- gpu_state_ = new gles2::GpuState;
- new gles2::GpuImpl(request.Pass(), gpu_state_);
-}
-
-} // namespace runner
-} // namespace mojo
diff --git a/mojo/runner/android/native_viewport_application_loader.h b/mojo/runner/android/native_viewport_application_loader.h
deleted file mode 100644
index 25b02fd..0000000
--- a/mojo/runner/android/native_viewport_application_loader.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2014 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 MOJO_RUNNER_ANDROID_NATIVE_VIEWPORT_APPLICATION_LOADER_H_
-#define MOJO_RUNNER_ANDROID_NATIVE_VIEWPORT_APPLICATION_LOADER_H_
-
-#include "components/view_manager/gles2/gpu_impl.h"
-#include "components/view_manager/public/interfaces/gpu.mojom.h"
-#include "components/view_manager/public/interfaces/native_viewport.mojom.h"
-#include "mojo/application/public/cpp/application_delegate.h"
-#include "mojo/application/public/cpp/interface_factory.h"
-#include "mojo/shell/application_loader.h"
-
-namespace gles2 {
-class GpuState;
-}
-
-namespace mojo {
-
-class ApplicationImpl;
-
-namespace runner {
-
-class NativeViewportApplicationLoader : public shell::ApplicationLoader,
- public ApplicationDelegate,
- public InterfaceFactory<NativeViewport>,
- public InterfaceFactory<Gpu> {
- public:
- NativeViewportApplicationLoader();
- ~NativeViewportApplicationLoader();
-
- private:
- // ApplicationLoader implementation.
- void Load(const GURL& url,
- InterfaceRequest<Application> application_request) override;
-
- // ApplicationDelegate implementation.
- bool ConfigureIncomingConnection(ApplicationConnection* connection) override;
-
- // InterfaceFactory<NativeViewport> implementation.
- void Create(ApplicationConnection* connection,
- InterfaceRequest<NativeViewport> request) override;
-
- // InterfaceFactory<Gpu> implementation.
- void Create(ApplicationConnection* connection,
- InterfaceRequest<Gpu> request) override;
-
- scoped_refptr<gles2::GpuState> gpu_state_;
- scoped_ptr<ApplicationImpl> app_;
-
- DISALLOW_COPY_AND_ASSIGN(NativeViewportApplicationLoader);
-};
-
-} // namespace runner
-} // namespace mojo
-
-#endif // MOJO_RUNNER_ANDROID_NATIVE_VIEWPORT_APPLICATION_LOADER_H_