mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Add a simple example based on the window and view managers. The skydb app can now handle apps that want to embed another view. Corrected a problem in unique module name generation. An otherwise unique module name could be shadowed by a parameter name (service_provider in ViewManagerService Embed). Appended a "$" suffix to module names to avoid the collision. BUG= R=eseidel@chromium.org Review URL: https://codereview.chromium.org/845103004
87 lines
3.2 KiB
C++
87 lines
3.2 KiB
C++
// 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 "base/memory/weak_ptr.h"
|
|
#include "mojo/public/cpp/application/application_delegate.h"
|
|
#include "mojo/public/cpp/application/application_impl.h"
|
|
#include "mojo/public/cpp/application/connect.h"
|
|
#include "mojo/public/cpp/application/service_provider_impl.h"
|
|
#include "mojo/services/input_events/public/interfaces/input_events.mojom.h"
|
|
#include "mojo/services/navigation/public/interfaces/navigation.mojom.h"
|
|
#include "mojo/services/view_manager/public/cpp/view_manager.h"
|
|
#include "mojo/services/view_manager/public/cpp/view_manager_delegate.h"
|
|
#include "mojo/services/view_manager/public/cpp/view_observer.h"
|
|
#include "services/window_manager/window_manager_app.h"
|
|
#include "services/window_manager/window_manager_delegate.h"
|
|
#include "sky/tools/debugger/debugger.mojom.h"
|
|
#include "sky/tools/debugger/navigator_host_impl.h"
|
|
#include "sky/viewer/services/inspector.mojom.h"
|
|
|
|
namespace sky {
|
|
namespace debugger {
|
|
|
|
class SkyDebugger : public mojo::ApplicationDelegate,
|
|
public mojo::ViewManagerDelegate,
|
|
public mojo::ViewObserver,
|
|
public mojo::InterfaceFactory<Debugger>,
|
|
public mojo::InterfaceImpl<Debugger>,
|
|
public window_manager::WindowManagerDelegate {
|
|
public:
|
|
SkyDebugger();
|
|
virtual ~SkyDebugger();
|
|
|
|
base::WeakPtr<SkyDebugger> GetWeakPtr();
|
|
|
|
// Overridden from Debugger
|
|
void NavigateToURL(const mojo::String& url) override;
|
|
void InjectInspector() override;
|
|
void Shutdown() override;
|
|
|
|
private:
|
|
// Overridden from mojo::ApplicationDelegate:
|
|
void Initialize(mojo::ApplicationImpl* app) override;
|
|
bool ConfigureIncomingConnection(
|
|
mojo::ApplicationConnection* connection) override;
|
|
bool ConfigureOutgoingConnection(
|
|
mojo::ApplicationConnection* connection) override;
|
|
|
|
// Overridden from mojo::ViewManagerDelegate:
|
|
void OnEmbed(mojo::View* root,
|
|
mojo::ServiceProviderImpl* exported_services,
|
|
scoped_ptr<mojo::ServiceProvider> imported_services) override;
|
|
void OnViewManagerDisconnected(mojo::ViewManager* view_manager) override;
|
|
|
|
// Overriden from mojo::ViewObserver:
|
|
void OnViewDestroyed(mojo::View* view) override;
|
|
void OnViewBoundsChanged(mojo::View* view,
|
|
const mojo::Rect& old_bounds,
|
|
const mojo::Rect& new_bounds) override;
|
|
|
|
// Overridden from InterfaceFactory<Debugger>:
|
|
void Create(mojo::ApplicationConnection* connection,
|
|
mojo::InterfaceRequest<Debugger> request) override;
|
|
|
|
// Overridden from WindowManagerDelegate
|
|
void Embed(
|
|
const mojo::String& url,
|
|
mojo::InterfaceRequest<mojo::ServiceProvider> service_provider) override;
|
|
|
|
scoped_ptr<window_manager::WindowManagerApp> window_manager_app_;
|
|
|
|
mojo::View* root_;
|
|
mojo::View* content_;
|
|
std::string pending_url_;
|
|
|
|
scoped_ptr<mojo::ServiceProvider> viewer_services_;
|
|
|
|
NavigatorHostFactory navigator_host_factory_;
|
|
|
|
base::WeakPtrFactory<SkyDebugger> weak_factory_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(SkyDebugger);
|
|
};
|
|
|
|
} // namespace debugger
|
|
} // namespace sky
|