| 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);
|
| -}
|
|
|