Index: mojo/examples/aura_demo/aura_demo.cc |
diff --git a/mojo/examples/aura_demo/aura_demo.cc b/mojo/examples/aura_demo/aura_demo.cc |
index b2464847a9476d6b931f7ca77caf4e20f77dba88..de005a77800c7497452d8ff7f4b893473b97836a 100644 |
--- a/mojo/examples/aura_demo/aura_demo.cc |
+++ b/mojo/examples/aura_demo/aura_demo.cc |
@@ -13,8 +13,11 @@ |
#include "mojo/public/cpp/application/application.h" |
#include "mojo/public/cpp/system/core.h" |
#include "mojo/public/interfaces/service_provider/service_provider.mojom.h" |
+#include "mojo/services/public/cpp/view_manager/node.h" |
+#include "mojo/services/public/cpp/view_manager/view.h" |
+#include "mojo/services/public/cpp/view_manager/view_manager.h" |
+#include "mojo/services/public/cpp/view_manager/view_manager_delegate.h" |
#include "mojo/services/public/interfaces/native_viewport/native_viewport.mojom.h" |
-#include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" |
#include "ui/aura/client/default_capture_client.h" |
#include "ui/aura/client/window_tree_client.h" |
#include "ui/aura/env.h" |
@@ -27,34 +30,6 @@ |
namespace mojo { |
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. |
class DemoWindowDelegate : public aura::WindowDelegate { |
public: |
@@ -128,97 +103,28 @@ class DemoWindowTreeClient : public aura::client::WindowTreeClient { |
DISALLOW_COPY_AND_ASSIGN(DemoWindowTreeClient); |
}; |
-class AuraDemo; |
- |
-// Trivial ViewManagerClient implementation. Forwards to AuraDemo when |
-// connection established. |
-class ViewManagerClientImpl |
- : public InterfaceImpl<view_manager::ViewManagerClient> { |
- public: |
- explicit ViewManagerClientImpl(AuraDemo* aura_demo) |
- : aura_demo_(aura_demo) {} |
- virtual ~ViewManagerClientImpl() {} |
- |
- private: |
- void OnResult(bool result) { |
- VLOG(1) << "ViewManagerClientImpl::::OnResult result=" << result; |
- DCHECK(result); |
- } |
- |
- // ViewManagerClient: |
- virtual void OnViewManagerConnectionEstablished( |
- uint16_t connection_id, |
- const String& creator_url, |
- uint32_t next_server_change_id, |
- mojo::Array<view_manager::NodeDataPtr> nodes) OVERRIDE; |
- virtual void OnRootsAdded(Array<view_manager::NodeDataPtr> nodes) OVERRIDE { |
- NOTREACHED(); |
- } |
- virtual void OnServerChangeIdAdvanced( |
- uint32_t next_server_change_id) OVERRIDE { |
- } |
- virtual void OnNodeBoundsChanged(uint32_t node, |
- mojo::RectPtr old_bounds, |
- mojo::RectPtr new_bounds) OVERRIDE { |
- } |
- virtual void OnNodeHierarchyChanged( |
- uint32_t node, |
- uint32_t new_parent, |
- uint32_t old_parent, |
- uint32_t server_change_id, |
- mojo::Array<view_manager::NodeDataPtr> nodes) OVERRIDE { |
- } |
- virtual void OnNodeReordered( |
- uint32_t node_id, |
- uint32_t relative_node_id, |
- view_manager::OrderDirection direction, |
- uint32_t server_change_id) OVERRIDE { |
- } |
- virtual void OnNodeDeleted(uint32_t node, uint32_t server_change_id) |
- OVERRIDE { |
- } |
- virtual void OnNodeViewReplaced(uint32_t node, |
- uint32_t new_view_id, |
- uint32_t old_view_id) OVERRIDE { |
- } |
- virtual void OnViewDeleted(uint32_t view) OVERRIDE { |
- } |
- virtual void OnViewInputEvent(uint32_t view_id, |
- EventPtr event, |
- const Callback<void()>& callback) OVERRIDE { |
- } |
- virtual void DispatchOnViewInputEvent(uint32_t view_id, |
- EventPtr event) OVERRIDE { |
- } |
- |
- AuraDemo* aura_demo_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ViewManagerClientImpl); |
-}; |
- |
-class AuraDemo : public Application, public WindowTreeHostMojoDelegate { |
+class AuraDemo : public Application, |
+ public WindowTreeHostMojoDelegate, |
+ public view_manager::ViewManagerDelegate { |
public: |
AuraDemo() |
- : view_manager_(NULL), |
- window1_(NULL), |
+ : window1_(NULL), |
window2_(NULL), |
window21_(NULL), |
- view_id_(0) { |
- AddService<ViewManagerClientImpl>(this); |
+ view_(NULL) { |
+ view_manager::ViewManager::Create(this, this); |
} |
virtual ~AuraDemo() {} |
- void SetRoot(view_manager::ViewManagerService* view_manager, |
- uint32_t view_id) { |
- 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()); |
- screen_.reset(ScreenMojo::Create()); |
- gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, screen_.get()); |
- |
- window_tree_host_.reset(new WindowTreeHostMojo(gfx::Rect(800, 600), this)); |
+ private: |
+ // Overridden from view_manager::ViewManagerDelegate: |
+ virtual void OnRootAdded(view_manager::ViewManager* view_manager, |
+ view_manager::Node* root) OVERRIDE { |
+ // TODO(beng): this function could be called multiple times! |
+ view_ = view_manager::View::Create(view_manager); |
+ root->SetActiveView(view_); |
+ |
+ window_tree_host_.reset(new WindowTreeHostMojo(root, this)); |
window_tree_host_->InitHost(); |
window_tree_client_.reset( |
@@ -250,26 +156,15 @@ class AuraDemo : public Application, public WindowTreeHostMojoDelegate { |
// 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)); |
+ view_->SetContents(bitmap); |
} |
virtual void Initialize() OVERRIDE { |
+ aura::Env::CreateInstance(true); |
+ context_factory_.reset(new ContextFactoryMojo); |
+ aura::Env::GetInstance()->set_context_factory(context_factory_.get()); |
+ screen_.reset(ScreenMojo::Create()); |
+ gfx::Screen::SetScreenInstance(gfx::SCREEN_TYPE_NATIVE, screen_.get()); |
} |
scoped_ptr<DemoWindowTreeClient> window_tree_client_; |
@@ -282,36 +177,17 @@ class AuraDemo : public Application, public WindowTreeHostMojoDelegate { |
scoped_ptr<DemoWindowDelegate> delegate2_; |
scoped_ptr<DemoWindowDelegate> delegate21_; |
- view_manager::ViewManagerService* view_manager_; |
- |
aura::Window* window1_; |
aura::Window* window2_; |
aura::Window* window21_; |
- uint32_t view_id_; |
+ view_manager::View* view_; |
scoped_ptr<aura::WindowTreeHost> window_tree_host_; |
- ScopedSharedBufferHandle shared_state_handle_; |
- |
DISALLOW_COPY_AND_ASSIGN(AuraDemo); |
}; |
-void ViewManagerClientImpl::OnViewManagerConnectionEstablished( |
- uint16_t connection_id, |
- const String& creator_url, |
- uint32_t next_server_change_id, |
- mojo::Array<view_manager::NodeDataPtr> nodes) { |
- const uint32_t view_id = connection_id << 16 | 1; |
- client()->CreateView(view_id, base::Bind(&ViewManagerClientImpl::OnResult, |
- base::Unretained(this))); |
- client()->SetView(nodes[0]->node_id, view_id, |
- base::Bind(&ViewManagerClientImpl::OnResult, |
- base::Unretained(this))); |
- |
- aura_demo_->SetRoot(client(), view_id); |
-} |
- |
} // namespace examples |
// static |