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

Unified Diff: mojo/shell/app_container.cc

Issue 51373002: NativeViewport (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 2 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
« mojo/shell/DEPS ('K') | « mojo/shell/DEPS ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/shell/app_container.cc
diff --git a/mojo/shell/app_container.cc b/mojo/shell/app_container.cc
index 0227e78c168ca9198d5e76d91a4a88506b7c6fcb..358e53add12c81198f4a78f3ba96fa9accef8506 100644
--- a/mojo/shell/app_container.cc
+++ b/mojo/shell/app_container.cc
@@ -9,16 +9,57 @@
#include "base/file_util.h"
#include "base/files/file_path.h"
#include "base/native_library.h"
+#include "base/strings/stringprintf.h"
#include "base/thread_task_runner_handle.h"
#include "base/threading/thread.h"
#include "mojo/public/system/core.h"
+#include "mojo/services/native_viewport/native_viewport.h"
+#include "mojo/services/native_viewport/native_viewport_delegate.h"
#include "mojo/shell/context.h"
+#include "ui/events/event.h"
typedef MojoResult (*MojoMainFunction)(mojo::Handle pipe);
namespace mojo {
namespace shell {
+// TODO(beng): This should move with the rest of the NativeViewportService
+// once we have a specific pipe/API.
+class ShellNativeViewportDelegate : public services::NativeViewportDelegate {
abarth-chromium 2013/10/29 21:48:44 Yeah, it's kind of lame to have this here. Can we
+ public:
+ explicit ShellNativeViewportDelegate(Handle shell_handle)
+ : shell_handle_(shell_handle) {}
+ virtual ~ShellNativeViewportDelegate() {}
+
+ private:
+ // Overridden from services::NativeViewportDelegate:
+ virtual bool OnEvent(ui::Event* event) OVERRIDE {
+ ui::LocatedEvent* located = static_cast<ui::LocatedEvent*>(event);
+ SendString(base::StringPrintf("Event @ %d,%d",
+ located->location().x(),
+ located->location().y()));
+ return false;
+ }
+ virtual void OnResized(const gfx::Size& size) OVERRIDE {
+ SendString(base::StringPrintf("Sized to: %d x %d",
+ size.width(),
+ size.height()));
+ }
+
+ void SendString(const std::string& string) {
+ MojoResult result = WriteMessage(
+ shell_handle_, string.c_str(), string.size()+1, NULL, 0,
+ MOJO_WRITE_MESSAGE_FLAG_NONE);
+ if (result < MOJO_RESULT_OK) {
+ // Failure.
+ }
+ }
+
+ Handle shell_handle_;
+
+ DISALLOW_COPY_AND_ASSIGN(ShellNativeViewportDelegate);
+};
+
void LaunchAppOnThread(
const base::FilePath& app_path,
Handle app_handle) {
@@ -89,6 +130,13 @@ void AppContainer::DidCompleteLoad(const GURL& app_url,
if (result < MOJO_RESULT_OK) {
// Failure..
}
+
+ // TODO(beng): This should be created on demand by the NativeViewportService
+ // when it is retrieved by the app.
+ ShellNativeViewportDelegate* delegate =
+ new ShellNativeViewportDelegate(shell_handle_);
+ services::NativeViewport* viewport =
+ services::NativeViewport::CreateNativeViewport(delegate);
abarth-chromium 2013/10/29 21:48:44 These leak, right? Maybe we should store them in
}
void AppContainer::AppCompleted() {
« mojo/shell/DEPS ('K') | « mojo/shell/DEPS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698