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

Unified Diff: mojo/examples/wm_flow/wm/wm.cc

Issue 684543003: Move //mojo/examples to //examples (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 6 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
« no previous file with comments | « mojo/examples/wm_flow/wm/frame_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/examples/wm_flow/wm/wm.cc
diff --git a/mojo/examples/wm_flow/wm/wm.cc b/mojo/examples/wm_flow/wm/wm.cc
deleted file mode 100644
index ba20e35bfcaf02b952fb7fe7e7bf4f690ccd1844..0000000000000000000000000000000000000000
--- a/mojo/examples/wm_flow/wm/wm.cc
+++ /dev/null
@@ -1,213 +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 <vector>
-
-#include "mojo/application/application_runner_chromium.h"
-#include "mojo/examples/wm_flow/wm/frame_controller.h"
-#include "mojo/public/c/system/main.h"
-#include "mojo/public/cpp/application/application_delegate.h"
-#include "mojo/public/cpp/application/application_impl.h"
-#include "mojo/public/cpp/application/service_provider_impl.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/cpp/view_manager/view_observer.h"
-#include "mojo/services/public/interfaces/input_events/input_events.mojom.h"
-#include "mojo/services/window_manager/window_manager_app.h"
-#include "mojo/services/window_manager/window_manager_delegate.h"
-#include "mojo/views/views_init.h"
-#include "ui/aura/window.h"
-#include "ui/wm/core/focus_rules.h"
-#include "ui/wm/public/activation_client.h"
-
-namespace examples {
-
-namespace {
-
-class WMFocusRules : public wm::FocusRules {
- public:
- WMFocusRules(mojo::WindowManagerApp* window_manager_app,
- mojo::View* window_container)
- : window_container_(window_container),
- window_manager_app_(window_manager_app) {}
- virtual ~WMFocusRules() {}
-
- private:
- // Overridden from wm::FocusRules:
- virtual bool IsToplevelWindow(aura::Window* window) const override {
- return mojo::WindowManagerApp::GetViewForWindow(window)->parent() ==
- window_container_;
- }
- virtual bool CanActivateWindow(aura::Window* window) const override {
- return mojo::WindowManagerApp::GetViewForWindow(window)->parent() ==
- window_container_;
- }
- virtual bool CanFocusWindow(aura::Window* window) const override {
- return true;
- }
- virtual aura::Window* GetToplevelWindow(aura::Window* window) const override {
- mojo::View* view = mojo::WindowManagerApp::GetViewForWindow(window);
- while (view->parent() != window_container_) {
- view = view->parent();
- // Unparented hierarchy, there is no "top level" window.
- if (!view)
- return NULL;
- }
-
- return window_manager_app_->GetWindowForViewId(view->id());
- }
- virtual aura::Window* GetActivatableWindow(
- aura::Window* window) const override {
- return GetToplevelWindow(window);
- }
- virtual aura::Window* GetFocusableWindow(
- aura::Window* window) const override {
- return window;
- }
- virtual aura::Window* GetNextActivatableWindow(
- aura::Window* ignore) const override {
- aura::Window* activatable = GetActivatableWindow(ignore);
- const aura::Window::Windows& children = activatable->parent()->children();
- for (aura::Window::Windows::const_reverse_iterator it = children.rbegin();
- it != children.rend(); ++it) {
- if (*it != ignore)
- return *it;
- }
- return NULL;
- }
-
- mojo::View* window_container_;
- mojo::WindowManagerApp* window_manager_app_;
-
- DISALLOW_COPY_AND_ASSIGN(WMFocusRules);
-};
-
-} // namespace
-
-class SimpleWM : public mojo::ApplicationDelegate,
- public mojo::ViewManagerDelegate,
- public mojo::WindowManagerDelegate,
- public mojo::ViewObserver {
- public:
- SimpleWM()
- : shell_(nullptr),
- window_manager_app_(new mojo::WindowManagerApp(this, this)),
- view_manager_(NULL),
- root_(NULL),
- window_container_(NULL),
- next_window_origin_(10, 10) {}
- virtual ~SimpleWM() {}
-
- private:
- // Overridden from mojo::ApplicationDelegate:
- virtual void Initialize(mojo::ApplicationImpl* impl) override {
- // Create views_init here as we need ApplicationRunnerChromium to install
- // an AtExitManager and CommandLine.
- if (!views_init_.get())
- views_init_.reset(new mojo::ViewsInit);
- shell_ = impl->shell();
- window_manager_app_->Initialize(impl);
- }
- virtual bool ConfigureIncomingConnection(
- mojo::ApplicationConnection* connection) override {
- window_manager_app_->ConfigureIncomingConnection(connection);
- return true;
- }
-
- // Overridden from mojo::ViewManagerDelegate:
- virtual void OnEmbed(
- mojo::ViewManager* view_manager,
- mojo::View* root,
- mojo::ServiceProviderImpl* exported_services,
- scoped_ptr<mojo::ServiceProvider> remote_service_provider) override {
- view_manager_ = view_manager;
- root_ = root;
-
- window_container_ = mojo::View::Create(view_manager_);
- window_container_->SetBounds(root_->bounds());
- root_->AddChild(window_container_);
-
- window_manager_app_->InitFocus(new WMFocusRules(window_manager_app_.get(),
- window_container_));
- }
- virtual void OnViewManagerDisconnected(
- mojo::ViewManager* view_manager) override {
- view_manager_ = NULL;
- root_ = NULL;
- }
-
- // Overridden from mojo::WindowManagerDelegate:
- virtual void Embed(
- const mojo::String& url,
- mojo::InterfaceRequest<mojo::ServiceProvider> service_provider) override {
- DCHECK(view_manager_);
- mojo::View* app_view = NULL;
- mojo::View* frame_view = CreateTopLevelWindow(&app_view);
- window_container_->AddChild(frame_view);
-
- // TODO(beng): We're dropping the |service_provider| passed from the client
- // on the floor here and passing our own. Seems like we should
- // be sending both. I'm not yet sure how this sould work for
- // N levels of proxying.
- app_view->Embed(url, scoped_ptr<mojo::ServiceProviderImpl>(
- new mojo::ServiceProviderImpl).Pass());
- }
-
- // Overridden from mojo::ViewObserver:
- virtual void OnViewInputEvent(mojo::View* view,
- const mojo::EventPtr& event) override {
- if (event->action == mojo::EVENT_TYPE_MOUSE_RELEASED &&
- event->flags & mojo::EVENT_FLAGS_RIGHT_MOUSE_BUTTON &&
- view->parent() == window_container_) {
- CloseWindow(view);
- }
- }
- virtual void OnViewDestroyed(mojo::View* view) override {
- view->RemoveObserver(this);
- }
-
- void CloseWindow(mojo::View* view) {
- mojo::View* first_child = view->children().front();
- first_child->Destroy();
- view->Destroy();
- next_window_origin_.Offset(-50, -50);
- }
-
- mojo::View* CreateTopLevelWindow(mojo::View** app_view) {
- mojo::View* frame_view = mojo::View::Create(view_manager_);
- mojo::Rect rect;
- rect.x = next_window_origin_.x();
- rect.y = next_window_origin_.y();
- rect.width = rect.height = 400;
- frame_view->SetBounds(rect);
- next_window_origin_.Offset(50, 50);
-
- aura::client::ActivationClient* client = aura::client::GetActivationClient(
- window_manager_app_->host()->window());
- new FrameController(
- shell_, frame_view, app_view, client, window_manager_app_.get());
- return frame_view;
- }
-
- mojo::Shell* shell_;
-
- scoped_ptr<mojo::ViewsInit> views_init_;
-
- scoped_ptr<mojo::WindowManagerApp> window_manager_app_;
-
- mojo::ViewManager* view_manager_;
- mojo::View* root_;
- mojo::View* window_container_;
-
- gfx::Point next_window_origin_;
-
- DISALLOW_COPY_AND_ASSIGN(SimpleWM);
-};
-
-} // namespace examples
-
-MojoResult MojoMain(MojoHandle shell_handle) {
- mojo::ApplicationRunnerChromium runner(new examples::SimpleWM);
- return runner.Run(shell_handle);
-}
« no previous file with comments | « mojo/examples/wm_flow/wm/frame_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698