Commit 69291542 authored by sky@chromium.org's avatar sky@chromium.org

Moves common view_manager related aura files to mojo/aura

I'm going to use these files in other examples. I refactored the code slightly to update compositor via a delegate. This way the code can easily (hopefully) be used by view_manager_lib related code.

I'm also making aura::Env extend base::SupportsUserData so that
consumers can add arbitrary key/value pairs to Env.

BUG=365012
TEST=none
R=ben@chromium.org

Review URL: https://codereview.chromium.org/314113011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275638 0039d316-1c4b-4281-b951-d872f2087c98
parent be32d87d
include_rules = [ include_rules = [
"+cc", "+cc",
"+skia",
"+ui/aura", "+ui/aura",
"+ui/compositor", "+ui/compositor",
"+ui/events", "+ui/events",
......
...@@ -2,19 +2,17 @@ ...@@ -2,19 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "mojo/examples/aura_demo/context_factory_view_manager.h" #include "mojo/aura/context_factory_mojo.h"
#include "base/bind.h" #include "base/bind.h"
#include "cc/output/output_surface.h" #include "cc/output/output_surface.h"
#include "cc/output/software_output_device.h" #include "cc/output/software_output_device.h"
#include "cc/resources/shared_bitmap_manager.h" #include "cc/resources/shared_bitmap_manager.h"
#include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" #include "mojo/aura/window_tree_host_mojo.h"
#include "skia/ext/platform_canvas.h" #include "skia/ext/platform_canvas.h"
#include "ui/compositor/reflector.h" #include "ui/compositor/reflector.h"
#include "ui/gfx/codec/png_codec.h"
namespace mojo { namespace mojo {
namespace examples {
namespace { namespace {
void FreeSharedBitmap(cc::SharedBitmap* shared_bitmap) { void FreeSharedBitmap(cc::SharedBitmap* shared_bitmap) {
...@@ -23,77 +21,26 @@ void FreeSharedBitmap(cc::SharedBitmap* shared_bitmap) { ...@@ -23,77 +21,26 @@ void FreeSharedBitmap(cc::SharedBitmap* shared_bitmap) {
void IgnoreSharedBitmap(cc::SharedBitmap* shared_bitmap) {} void IgnoreSharedBitmap(cc::SharedBitmap* shared_bitmap) {}
bool CreateMapAndDupSharedBuffer(size_t size,
void** memory,
ScopedSharedBufferHandle* handle,
ScopedSharedBufferHandle* duped) {
MojoResult result = CreateSharedBuffer(NULL, size, handle);
if (result != MOJO_RESULT_OK)
return false;
DCHECK(handle->is_valid());
result = DuplicateBuffer(handle->get(), NULL, duped);
if (result != MOJO_RESULT_OK)
return false;
DCHECK(duped->is_valid());
result = MapBuffer(
handle->get(), 0, size, memory, MOJO_MAP_BUFFER_FLAG_NONE);
if (result != MOJO_RESULT_OK)
return false;
DCHECK(*memory);
return true;
}
class SoftwareOutputDeviceViewManager : public cc::SoftwareOutputDevice { class SoftwareOutputDeviceViewManager : public cc::SoftwareOutputDevice {
public: public:
explicit SoftwareOutputDeviceViewManager( explicit SoftwareOutputDeviceViewManager(ui::Compositor* compositor)
view_manager::IViewManager* view_manager, : compositor_(compositor) {
uint32_t view_id)
: view_manager_(view_manager),
view_id_(view_id) {
} }
virtual ~SoftwareOutputDeviceViewManager() {} virtual ~SoftwareOutputDeviceViewManager() {}
// cc::SoftwareOutputDevice: // cc::SoftwareOutputDevice:
virtual void EndPaint(cc::SoftwareFrameData* frame_data) OVERRIDE { virtual void EndPaint(cc::SoftwareFrameData* frame_data) OVERRIDE {
SetViewContents(); WindowTreeHostMojo* window_tree_host =
WindowTreeHostMojo::ForCompositor(compositor_);
DCHECK(window_tree_host);
window_tree_host->SetContents(
skia::GetTopDevice(*canvas_)->accessBitmap(true));
SoftwareOutputDevice::EndPaint(frame_data); SoftwareOutputDevice::EndPaint(frame_data);
} }
private: private:
void OnSetViewContentsDone(bool value) { ui::Compositor* compositor_;
VLOG(1) << "SoftwareOutputDeviceManager::OnSetViewContentsDone " << value;
DCHECK(value);
}
void SetViewContents() {
std::vector<unsigned char> data;
gfx::PNGCodec::EncodeBGRASkBitmap(
skia::GetTopDevice(*canvas_)->accessBitmap(true), false, &data);
void* memory = NULL;
ScopedSharedBufferHandle duped;
bool result = CreateMapAndDupSharedBuffer(data.size(),
&memory,
&shared_state_handle_,
&duped);
if (!result)
return;
memcpy(memory, &data[0], data.size());
view_manager_->SetViewContents(
view_id_, duped.Pass(), static_cast<uint32_t>(data.size()),
base::Bind(&SoftwareOutputDeviceViewManager::OnSetViewContentsDone,
base::Unretained(this)));
}
view_manager::IViewManager* view_manager_;
const uint32_t view_id_;
ScopedSharedBufferHandle shared_state_handle_;
DISALLOW_COPY_AND_ASSIGN(SoftwareOutputDeviceViewManager); DISALLOW_COPY_AND_ASSIGN(SoftwareOutputDeviceViewManager);
}; };
...@@ -145,50 +92,45 @@ class TestSharedBitmapManager : public cc::SharedBitmapManager { ...@@ -145,50 +92,45 @@ class TestSharedBitmapManager : public cc::SharedBitmapManager {
} // namespace } // namespace
ContextFactoryViewManager::ContextFactoryViewManager( ContextFactoryMojo::ContextFactoryMojo()
view_manager::IViewManager* view_manager, : shared_bitmap_manager_(new TestSharedBitmapManager()) {
uint32_t view_id)
: view_manager_(view_manager),
view_id_(view_id),
shared_bitmap_manager_(new TestSharedBitmapManager()) {
} }
ContextFactoryViewManager::~ContextFactoryViewManager() {} ContextFactoryMojo::~ContextFactoryMojo() {}
scoped_ptr<cc::OutputSurface> ContextFactoryViewManager::CreateOutputSurface( scoped_ptr<cc::OutputSurface> ContextFactoryMojo::CreateOutputSurface(
ui::Compositor* compositor, ui::Compositor* compositor,
bool software_fallback) { bool software_fallback) {
scoped_ptr<cc::SoftwareOutputDevice> output_device( scoped_ptr<cc::SoftwareOutputDevice> output_device(
new SoftwareOutputDeviceViewManager(view_manager_, view_id_)); new SoftwareOutputDeviceViewManager(compositor));
return make_scoped_ptr(new cc::OutputSurface(output_device.Pass())); return make_scoped_ptr(new cc::OutputSurface(output_device.Pass()));
} }
scoped_refptr<ui::Reflector> ContextFactoryViewManager::CreateReflector( scoped_refptr<ui::Reflector> ContextFactoryMojo::CreateReflector(
ui::Compositor* mirroed_compositor, ui::Compositor* mirroed_compositor,
ui::Layer* mirroring_layer) { ui::Layer* mirroring_layer) {
return new ui::Reflector(); return new ui::Reflector();
} }
void ContextFactoryViewManager::RemoveReflector( void ContextFactoryMojo::RemoveReflector(
scoped_refptr<ui::Reflector> reflector) { scoped_refptr<ui::Reflector> reflector) {
} }
scoped_refptr<cc::ContextProvider> scoped_refptr<cc::ContextProvider>
ContextFactoryViewManager::SharedMainThreadContextProvider() { ContextFactoryMojo::SharedMainThreadContextProvider() {
return scoped_refptr<cc::ContextProvider>(NULL); return scoped_refptr<cc::ContextProvider>(NULL);
} }
void ContextFactoryViewManager::RemoveCompositor(ui::Compositor* compositor) {} void ContextFactoryMojo::RemoveCompositor(ui::Compositor* compositor) {}
bool ContextFactoryViewManager::DoesCreateTestContexts() { return false; } bool ContextFactoryMojo::DoesCreateTestContexts() { return false; }
cc::SharedBitmapManager* ContextFactoryViewManager::GetSharedBitmapManager() { cc::SharedBitmapManager* ContextFactoryMojo::GetSharedBitmapManager() {
return shared_bitmap_manager_.get(); return shared_bitmap_manager_.get();
} }
base::MessageLoopProxy* ContextFactoryViewManager::GetCompositorMessageLoop() { base::MessageLoopProxy* ContextFactoryMojo::GetCompositorMessageLoop() {
return NULL; return NULL;
} }
} // namespace examples
} // namespace mojo } // namespace mojo
...@@ -2,22 +2,17 @@ ...@@ -2,22 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef MOJO_EXAMPLES_AURA_DEMO_CONTEXT_FACTORY_VIEW_MANAGER_H_ #ifndef MOJO_AURA_CONTEXT_FACTORY_MOJO_H_
#define MOJO_EXAMPLES_AURA_DEMO_CONTEXT_FACTORY_VIEW_MANAGER_H_ #define MOJO_AURA_CONTEXT_FACTORY_MOJO_H_
#include "ui/compositor/compositor.h" #include "ui/compositor/compositor.h"
namespace mojo { namespace mojo {
namespace view_manager {
class IViewManager;
}
namespace examples {
class ContextFactoryViewManager : public ui::ContextFactory { class ContextFactoryMojo : public ui::ContextFactory {
public: public:
ContextFactoryViewManager(view_manager::IViewManager* view_manager, ContextFactoryMojo();
uint32_t view_id); virtual ~ContextFactoryMojo();
virtual ~ContextFactoryViewManager();
private: private:
// ContextFactory: // ContextFactory:
...@@ -35,14 +30,11 @@ class ContextFactoryViewManager : public ui::ContextFactory { ...@@ -35,14 +30,11 @@ class ContextFactoryViewManager : public ui::ContextFactory {
virtual cc::SharedBitmapManager* GetSharedBitmapManager() OVERRIDE; virtual cc::SharedBitmapManager* GetSharedBitmapManager() OVERRIDE;
virtual base::MessageLoopProxy* GetCompositorMessageLoop() OVERRIDE; virtual base::MessageLoopProxy* GetCompositorMessageLoop() OVERRIDE;
view_manager::IViewManager* view_manager_;
const uint32_t view_id_;
scoped_ptr<cc::SharedBitmapManager> shared_bitmap_manager_; scoped_ptr<cc::SharedBitmapManager> shared_bitmap_manager_;
DISALLOW_COPY_AND_ASSIGN(ContextFactoryViewManager); DISALLOW_COPY_AND_ASSIGN(ContextFactoryMojo);
}; };
} // namespace examples
} // namespace mojo } // namespace mojo
#endif // MOJO_EXAMPLES_AURA_DEMO_CONTEXT_FACTORY_VIEW_MANAGER_H_ #endif // MOJO_AURA_CONTEXT_FACTORY_MOJO_H_
// 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/aura/window_tree_host_mojo.h"
#include <vector>
#include "mojo/aura/window_tree_host_mojo_delegate.h"
#include "ui/aura/env.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/events/event.h"
#include "ui/events/event_constants.h"
namespace mojo {
namespace {
const char kTreeHostsKey[] = "tree_hosts";
typedef std::vector<WindowTreeHostMojo*> Managers;
class TreeHosts : public base::SupportsUserData::Data {
public:
TreeHosts() {}
virtual ~TreeHosts() {}
static TreeHosts* Get() {
TreeHosts* hosts = static_cast<TreeHosts*>(
aura::Env::GetInstance()->GetUserData(kTreeHostsKey));
if (!hosts) {
hosts = new TreeHosts;
aura::Env::GetInstance()->SetUserData(kTreeHostsKey, hosts);
}
return hosts;
}
void Add(WindowTreeHostMojo* manager) {
managers_.push_back(manager);
}
void Remove(WindowTreeHostMojo* manager) {
Managers::iterator i = std::find(managers_.begin(), managers_.end(),
manager);
DCHECK(i != managers_.end());
managers_.erase(i);
}
const std::vector<WindowTreeHostMojo*> managers() const {
return managers_;
}
private:
Managers managers_;
DISALLOW_COPY_AND_ASSIGN(TreeHosts);
};
} // namespace
////////////////////////////////////////////////////////////////////////////////
// WindowTreeHostMojo, public:
WindowTreeHostMojo::WindowTreeHostMojo(const gfx::Rect& bounds,
WindowTreeHostMojoDelegate* delegate)
: bounds_(bounds),
delegate_(delegate) {
CreateCompositor(GetAcceleratedWidget());
TreeHosts::Get()->Add(this);
}
WindowTreeHostMojo::~WindowTreeHostMojo() {
TreeHosts::Get()->Remove(this);
DestroyCompositor();
DestroyDispatcher();
}
// static
WindowTreeHostMojo* WindowTreeHostMojo::ForCompositor(
ui::Compositor* compositor) {
const Managers& managers = TreeHosts::Get()->managers();
for (size_t i = 0; i < managers.size(); ++i) {
if (managers[i]->compositor() == compositor)
return managers[i];
}
return NULL;
}
void WindowTreeHostMojo::SetContents(const SkBitmap& contents) {
delegate_->CompositorContentsChanged(contents);
}
////////////////////////////////////////////////////////////////////////////////
// WindowTreeHostMojo, aura::WindowTreeHost implementation:
ui::EventSource* WindowTreeHostMojo::GetEventSource() {
return this;
}
gfx::AcceleratedWidget WindowTreeHostMojo::GetAcceleratedWidget() {
NOTIMPLEMENTED() << "GetAcceleratedWidget";
return gfx::kNullAcceleratedWidget;
}
void WindowTreeHostMojo::Show() {
window()->Show();
}
void WindowTreeHostMojo::Hide() {
}
gfx::Rect WindowTreeHostMojo::GetBounds() const {
return bounds_;
}
void WindowTreeHostMojo::SetBounds(const gfx::Rect& bounds) {
}
gfx::Point WindowTreeHostMojo::GetLocationOnNativeScreen() const {
return gfx::Point(0, 0);
}
void WindowTreeHostMojo::SetCapture() {
NOTIMPLEMENTED();
}
void WindowTreeHostMojo::ReleaseCapture() {
NOTIMPLEMENTED();
}
void WindowTreeHostMojo::PostNativeEvent(
const base::NativeEvent& native_event) {
NOTIMPLEMENTED();
}
void WindowTreeHostMojo::OnDeviceScaleFactorChanged(
float device_scale_factor) {
NOTIMPLEMENTED();
}
void WindowTreeHostMojo::SetCursorNative(gfx::NativeCursor cursor) {
NOTIMPLEMENTED();
}
void WindowTreeHostMojo::MoveCursorToNative(const gfx::Point& location) {
NOTIMPLEMENTED();
}
void WindowTreeHostMojo::OnCursorVisibilityChangedNative(bool show) {
NOTIMPLEMENTED();
}
////////////////////////////////////////////////////////////////////////////////
// WindowTreeHostMojo, ui::EventSource implementation:
ui::EventProcessor* WindowTreeHostMojo::GetEventProcessor() {
return dispatcher();
}
} // namespace mojo
...@@ -9,17 +9,31 @@ ...@@ -9,17 +9,31 @@
#include "ui/events/event_source.h" #include "ui/events/event_source.h"
#include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/rect.h"
class SkBitmap;
namespace ui {
class Compositor;
}
namespace mojo { namespace mojo {
namespace examples {
class WindowTreeHostViewManager : public aura::WindowTreeHost, class WindowTreeHostMojoDelegate;
public ui::EventSource {
class WindowTreeHostMojo : public aura::WindowTreeHost, public ui::EventSource {
public: public:
explicit WindowTreeHostViewManager(const gfx::Rect& bounds); WindowTreeHostMojo(const gfx::Rect& bounds,
virtual ~WindowTreeHostViewManager(); WindowTreeHostMojoDelegate* delegate);
virtual ~WindowTreeHostMojo();
// Returns the WindowTreeHostMojo for the specified compositor.
static WindowTreeHostMojo* ForCompositor(ui::Compositor* compositor);
const gfx::Rect& bounds() const { return bounds_; } const gfx::Rect& bounds() const { return bounds_; }
// Sets the contents to show in this WindowTreeHost. This forwards to the
// delegate.
void SetContents(const SkBitmap& contents);
private: private:
// WindowTreeHost: // WindowTreeHost:
virtual ui::EventSource* GetEventSource() OVERRIDE; virtual ui::EventSource* GetEventSource() OVERRIDE;
...@@ -42,10 +56,11 @@ class WindowTreeHostViewManager : public aura::WindowTreeHost, ...@@ -42,10 +56,11 @@ class WindowTreeHostViewManager : public aura::WindowTreeHost,
gfx::Rect bounds_; gfx::Rect bounds_;
DISALLOW_COPY_AND_ASSIGN(WindowTreeHostViewManager); WindowTreeHostMojoDelegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(WindowTreeHostMojo);
}; };
} // namespace examples
} // namespace mojo } // namespace mojo
#endif // MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_H_ #endif // MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_H_
// 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_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_DELEGATE_H_
#define MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_DELEGATE_H_
class SkBitmap;
namespace mojo {
class WindowTreeHostMojoDelegate {
public:
// Invoked when the contents of the composite associated with the
// WindowTreeHostMojo are updated.
virtual void CompositorContentsChanged(const SkBitmap& bitmap) = 0;
protected:
virtual ~WindowTreeHostMojoDelegate() {}
};
} // namespace mojo
#endif // MOJO_EXAMPLES_AURA_DEMO_WINDOW_TREE_HOST_VIEW_MANAGER_DELEGATE_H_
...@@ -6,9 +6,10 @@ ...@@ -6,9 +6,10 @@
#include <string> #include <string>
#include "base/bind.h" #include "base/bind.h"
#include "mojo/aura/context_factory_mojo.h"
#include "mojo/aura/screen_mojo.h" #include "mojo/aura/screen_mojo.h"
#include "mojo/examples/aura_demo/context_factory_view_manager.h" #include "mojo/aura/window_tree_host_mojo.h"
#include "mojo/examples/aura_demo/window_tree_host_view_manager.h" #include "mojo/aura/window_tree_host_mojo_delegate.h"
#include "mojo/public/cpp/application/application.h" #include "mojo/public/cpp/application/application.h"
#include "mojo/public/cpp/system/core.h" #include "mojo/public/cpp/system/core.h"
#include "mojo/public/interfaces/service_provider/service_provider.mojom.h" #include "mojo/public/interfaces/service_provider/service_provider.mojom.h"
...@@ -21,10 +22,39 @@ ...@@ -21,10 +22,39 @@
#include "ui/aura/window_delegate.h" #include "ui/aura/window_delegate.h"
#include "ui/base/hit_test.h" #include "ui/base/hit_test.h"
#include "ui/gfx/canvas.h" #include "ui/gfx/canvas.h"
#include "ui/gfx/codec/png_codec.h"
namespace mojo { namespace mojo {
namespace examples { namespace examples {
void OnSetViewContentsDone(bool value) {
VLOG(1) << "OnSetViewContentsDone " << value;
DCHECK(value);
}
bool CreateMapAndDupSharedBuffer(size_t size,
void** memory,
ScopedSharedBufferHandle* handle,
ScopedSharedBufferHandle* duped) {
MojoResult result = CreateSharedBuffer(NULL, size, handle);
if (result != MOJO_RESULT_OK)
return false;
DCHECK(handle->is_valid());
result = DuplicateBuffer(handle->get(), NULL, duped);
if (result != MOJO_RESULT_OK)
return false;
DCHECK(duped->is_valid());
result = MapBuffer(
handle->get(), 0, size, memory, MOJO_MAP_BUFFER_FLAG_NONE);
if (result != MOJO_RESULT_OK)
return false;
DCHECK(*memory);
return true;
}
// Trivial WindowDelegate implementation that draws a colored background. // Trivial WindowDelegate implementation that draws a colored background.
class DemoWindowDelegate : public aura::WindowDelegate { class DemoWindowDelegate : public aura::WindowDelegate {
public: public:
...@@ -156,22 +186,28 @@ class IViewManagerClientImpl ...@@ -156,22 +186,28 @@ class IViewManagerClientImpl
DISALLOW_COPY_AND_ASSIGN(IViewManagerClientImpl); DISALLOW_COPY_AND_ASSIGN(IViewManagerClientImpl);
}; };
class AuraDemo : public Application { class AuraDemo : public Application, public WindowTreeHostMojoDelegate {
public: public:
AuraDemo() { AuraDemo()
: view_manager_(NULL),
window1_(NULL),
window2_(NULL),
window21_(NULL),
view_id_(0) {
AddService<IViewManagerClientImpl>(this); AddService<IViewManagerClientImpl>(this);
} }
virtual ~AuraDemo() {} virtual ~AuraDemo() {}
void SetRoot(view_manager::IViewManager* view_manager, uint32_t node_id) { void SetRoot(view_manager::IViewManager* view_manager, uint32_t view_id) {
context_factory_.reset(
new ContextFactoryViewManager(view_manager, node_id));
aura::Env::CreateInstance(true); aura::Env::CreateInstance(true);
view_manager_ = view_manager;
view_id_ = view_id;
context_factory_.reset(new ContextFactoryMojo);
aura::Env::GetInstance()->set_context_factory(context_factory_.get()); aura::Env::GetInstance()->set_context_factory(context_factory_.get());
screen_.reset(ScreenMojo::Create()); screen_.reset(ScreenMojo::Create());
gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, screen_.get()); gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, screen_.get());
window_tree_host_.reset(new WindowTreeHostViewManager(gfx::Rect(800, 600))); window_tree_host_.reset(new WindowTreeHostMojo(gfx::Rect(800, 600), this));
window_tree_host_->InitHost(); window_tree_host_->InitHost();
window_tree_client_.reset( window_tree_client_.reset(
...@@ -201,25 +237,52 @@ class AuraDemo : public Application { ...@@ -201,25 +237,52 @@ class AuraDemo : public Application {
window_tree_host_->Show(); window_tree_host_->Show();
} }
// WindowTreeHostMojoDelegate:
virtual void CompositorContentsChanged(const SkBitmap& bitmap) OVERRIDE {
std::vector<unsigned char> data;
gfx::PNGCodec::EncodeBGRASkBitmap(bitmap, false, &data);
void* memory = NULL;
ScopedSharedBufferHandle duped;
bool result = CreateMapAndDupSharedBuffer(data.size(),
&memory,
&shared_state_handle_,
&duped);
if (!result)
return;
memcpy(memory, &data[0], data.size());
view_manager_->SetViewContents(
view_id_, duped.Pass(), static_cast<uint32_t>(data.size()),
base::Bind(&OnSetViewContentsDone));
}
virtual void Initialize() OVERRIDE { virtual void Initialize() OVERRIDE {
} }
scoped_ptr<ContextFactoryViewManager> context_factory_; scoped_ptr<DemoWindowTreeClient> window_tree_client_;
scoped_ptr<ScreenMojo> screen_; scoped_ptr<ui::ContextFactory> context_factory_;
scoped_ptr<DemoWindowTreeClient> window_tree_client_; scoped_ptr<ScreenMojo> screen_;
scoped_ptr<DemoWindowDelegate> delegate1_; scoped_ptr<DemoWindowDelegate> delegate1_;
scoped_ptr<DemoWindowDelegate> delegate2_; scoped_ptr<DemoWindowDelegate> delegate2_;
scoped_ptr<DemoWindowDelegate> delegate21_; scoped_ptr<DemoWindowDelegate> delegate21_;
view_manager::IViewManager* view_manager_;
aura::Window* window1_; aura::Window* window1_;
aura::Window* window2_; aura::Window* window2_;
aura::Window* window21_; aura::Window* window21_;
uint32_t view_id_;
scoped_ptr<aura::WindowTreeHost> window_tree_host_; scoped_ptr<aura::WindowTreeHost> window_tree_host_;
ScopedSharedBufferHandle shared_state_handle_;
DISALLOW_COPY_AND_ASSIGN(AuraDemo); DISALLOW_COPY_AND_ASSIGN(AuraDemo);
}; };
......
// 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/examples/aura_demo/window_tree_host_view_manager.h"
#include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h"
#include "ui/events/event.h"
#include "ui/events/event_constants.h"
namespace mojo {
namespace examples {
////////////////////////////////////////////////////////////////////////////////
// WindowTreeHostViewManager, public:
WindowTreeHostViewManager::WindowTreeHostViewManager(const gfx::Rect& bounds)
: bounds_(bounds) {
CreateCompositor(GetAcceleratedWidget());
}
WindowTreeHostViewManager::~WindowTreeHostViewManager() {
DestroyCompositor();
DestroyDispatcher();
}
////////////////////////////////////////////////////////////////////////////////
// WindowTreeHostViewManager, aura::WindowTreeHost implementation:
ui::EventSource* WindowTreeHostViewManager::GetEventSource() {
return this;
}
gfx::AcceleratedWidget WindowTreeHostViewManager::GetAcceleratedWidget() {
NOTIMPLEMENTED() << "GetAcceleratedWidget";
return gfx::kNullAcceleratedWidget;
}
void WindowTreeHostViewManager::Show() {
window()->Show();
}
void WindowTreeHostViewManager::Hide() {
}
gfx::Rect WindowTreeHostViewManager::GetBounds() const {
return bounds_;
}
void WindowTreeHostViewManager::SetBounds(const gfx::Rect& bounds) {
}
gfx::Point WindowTreeHostViewManager::GetLocationOnNativeScreen() const {
return gfx::Point(0, 0);
}
void WindowTreeHostViewManager::SetCapture() {
NOTIMPLEMENTED();
}
void WindowTreeHostViewManager::ReleaseCapture() {
NOTIMPLEMENTED();
}
void WindowTreeHostViewManager::PostNativeEvent(
const base::NativeEvent& native_event) {
NOTIMPLEMENTED();
}
void WindowTreeHostViewManager::OnDeviceScaleFactorChanged(
float device_scale_factor) {
NOTIMPLEMENTED();
}
void WindowTreeHostViewManager::SetCursorNative(gfx::NativeCursor cursor) {
NOTIMPLEMENTED();
}
void WindowTreeHostViewManager::MoveCursorToNative(const gfx::Point& location) {
NOTIMPLEMENTED();
}
void WindowTreeHostViewManager::OnCursorVisibilityChangedNative(bool show) {
NOTIMPLEMENTED();
}
////////////////////////////////////////////////////////////////////////////////
// WindowTreeHostViewManager, ui::EventSource implementation:
ui::EventProcessor* WindowTreeHostViewManager::GetEventProcessor() {
return dispatcher();
}
} // namespace examples
} // namespace mojo
...@@ -898,8 +898,13 @@ ...@@ -898,8 +898,13 @@
'mojo_native_viewport_bindings', 'mojo_native_viewport_bindings',
], ],
'sources': [ 'sources': [
'aura/context_factory_mojo.cc',
'aura/context_factory_mojo.h',
'aura/screen_mojo.cc', 'aura/screen_mojo.cc',
'aura/screen_mojo.h', 'aura/screen_mojo.h',
'aura/window_tree_host_mojo.cc',
'aura/window_tree_host_mojo.h',
'aura/window_tree_host_mojo_delegate.h',
], ],
}, },
], ],
......
...@@ -212,10 +212,6 @@ ...@@ -212,10 +212,6 @@
'mojo_view_manager_bindings', 'mojo_view_manager_bindings',
], ],
'sources': [ 'sources': [
'examples/aura_demo/context_factory_view_manager.cc',
'examples/aura_demo/context_factory_view_manager.h',
'examples/aura_demo/window_tree_host_view_manager.cc',
'examples/aura_demo/window_tree_host_view_manager.h',
'examples/aura_demo/aura_demo.cc', 'examples/aura_demo/aura_demo.cc',
'public/cpp/application/lib/mojo_main_chromium.cc', 'public/cpp/application/lib/mojo_main_chromium.cc',
], ],
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "base/supports_user_data.h"
#include "ui/aura/aura_export.h" #include "ui/aura/aura_export.h"
#include "ui/events/event_handler.h" #include "ui/events/event_handler.h"
#include "ui/events/event_target.h" #include "ui/events/event_target.h"
...@@ -28,7 +29,7 @@ class Window; ...@@ -28,7 +29,7 @@ class Window;
class WindowTreeHost; class WindowTreeHost;
// A singleton object that tracks general state within Aura. // A singleton object that tracks general state within Aura.
class AURA_EXPORT Env : public ui::EventTarget { class AURA_EXPORT Env : public ui::EventTarget, public base::SupportsUserData {
public: public:
// Creates the single Env instance (if it hasn't been created yet). If // Creates the single Env instance (if it hasn't been created yet). If
// |create_event_source| is true a PlatformEventSource is created. // |create_event_source| is true a PlatformEventSource is created.
......
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