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

Unified Diff: mojo/examples/aura_demo/aura_demo.cc

Issue 314113011: Moves common view_manager related aura files to mojo/aura (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tweaks Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/aura/window_tree_host_mojo_delegate.h ('k') | mojo/examples/aura_demo/context_factory_view_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 675704fd04359041b09ea8f0c9a29450d7eeb67b..d40a1ce67f86c06bfca24925191696565affc1b5 100644
--- a/mojo/examples/aura_demo/aura_demo.cc
+++ b/mojo/examples/aura_demo/aura_demo.cc
@@ -6,9 +6,10 @@
#include <string>
#include "base/bind.h"
+#include "mojo/aura/context_factory_mojo.h"
#include "mojo/aura/screen_mojo.h"
-#include "mojo/examples/aura_demo/context_factory_view_manager.h"
-#include "mojo/examples/aura_demo/window_tree_host_view_manager.h"
+#include "mojo/aura/window_tree_host_mojo.h"
+#include "mojo/aura/window_tree_host_mojo_delegate.h"
#include "mojo/public/cpp/application/application.h"
#include "mojo/public/cpp/system/core.h"
#include "mojo/public/interfaces/service_provider/service_provider.mojom.h"
@@ -21,10 +22,39 @@
#include "ui/aura/window_delegate.h"
#include "ui/base/hit_test.h"
#include "ui/gfx/canvas.h"
+#include "ui/gfx/codec/png_codec.h"
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:
@@ -156,22 +186,28 @@ class IViewManagerClientImpl
DISALLOW_COPY_AND_ASSIGN(IViewManagerClientImpl);
};
-class AuraDemo : public Application {
+class AuraDemo : public Application, public WindowTreeHostMojoDelegate {
public:
- AuraDemo() {
+ AuraDemo()
+ : view_manager_(NULL),
+ window1_(NULL),
+ window2_(NULL),
+ window21_(NULL),
+ view_id_(0) {
AddService<IViewManagerClientImpl>(this);
}
virtual ~AuraDemo() {}
- void SetRoot(view_manager::IViewManager* view_manager, uint32_t node_id) {
- context_factory_.reset(
- new ContextFactoryViewManager(view_manager, node_id));
+ void SetRoot(view_manager::IViewManager* 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 WindowTreeHostViewManager(gfx::Rect(800, 600)));
+ window_tree_host_.reset(new WindowTreeHostMojo(gfx::Rect(800, 600), this));
window_tree_host_->InitHost();
window_tree_client_.reset(
@@ -201,25 +237,52 @@ class AuraDemo : public Application {
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 {
}
- 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> delegate2_;
scoped_ptr<DemoWindowDelegate> delegate21_;
+ view_manager::IViewManager* view_manager_;
+
aura::Window* window1_;
aura::Window* window2_;
aura::Window* window21_;
+ uint32_t view_id_;
+
scoped_ptr<aura::WindowTreeHost> window_tree_host_;
+ ScopedSharedBufferHandle shared_state_handle_;
+
DISALLOW_COPY_AND_ASSIGN(AuraDemo);
};
« no previous file with comments | « mojo/aura/window_tree_host_mojo_delegate.h ('k') | mojo/examples/aura_demo/context_factory_view_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698