| Index: mandoline/ui/browser/browser.cc
|
| diff --git a/mandoline/ui/browser/browser.cc b/mandoline/ui/browser/browser.cc
|
| index 50c774c48183179295cf2946616c51ed39731d41..b357dfdd0c24804859ab3095423a21320a91b81d 100644
|
| --- a/mandoline/ui/browser/browser.cc
|
| +++ b/mandoline/ui/browser/browser.cc
|
| @@ -9,10 +9,9 @@
|
| #include "components/view_manager/public/cpp/view.h"
|
| #include "components/view_manager/public/cpp/view_manager_init.h"
|
| #include "mandoline/tab/frame.h"
|
| -#include "mandoline/tab/frame_services.h"
|
| +#include "mandoline/tab/frame_connection.h"
|
| #include "mandoline/tab/frame_tree.h"
|
| #include "mandoline/ui/browser/browser_ui.h"
|
| -#include "mandoline/ui/browser/merged_service_provider.h"
|
| #include "mojo/application/public/cpp/application_runner.h"
|
| #include "mojo/common/common_type_converters.h"
|
| #include "mojo/converters/geometry/geometry_type_converters.h"
|
| @@ -39,7 +38,6 @@ Browser::Browser()
|
| omnibox_(nullptr),
|
| navigator_host_(this),
|
| app_(nullptr) {
|
| - exposed_services_impl_.AddService<mojo::NavigatorHost>(this);
|
| }
|
|
|
| Browser::~Browser() {
|
| @@ -50,7 +48,7 @@ Browser::~Browser() {
|
| }
|
|
|
| void Browser::ReplaceContentWithRequest(mojo::URLRequestPtr request) {
|
| - Embed(request.Pass(), nullptr, nullptr);
|
| + Embed(request.Pass());
|
| }
|
|
|
| void Browser::Initialize(mojo::ApplicationImpl* app) {
|
| @@ -84,10 +82,7 @@ bool Browser::ConfigureOutgoingConnection(
|
| return true;
|
| }
|
|
|
| -void Browser::OnEmbed(
|
| - mojo::View* root,
|
| - mojo::InterfaceRequest<mojo::ServiceProvider> services,
|
| - mojo::ServiceProviderPtr exposed_services) {
|
| +void Browser::OnEmbed(mojo::View* root) {
|
| // Browser does not support being embedded more than once.
|
| CHECK(!root_);
|
|
|
| @@ -113,24 +108,26 @@ void Browser::OnEmbed(
|
|
|
| // Now that we're ready, either load a pending url or the default url.
|
| if (pending_request_) {
|
| - Embed(pending_request_.Pass(), services.Pass(), exposed_services.Pass());
|
| + Embed(pending_request_.Pass());
|
| } else if (!default_url_.empty()) {
|
| mojo::URLRequestPtr request(mojo::URLRequest::New());
|
| request->url = mojo::String::From(default_url_);
|
| - Embed(request.Pass(), services.Pass(), exposed_services.Pass());
|
| + Embed(request.Pass());
|
| }
|
| }
|
|
|
| -bool Browser::OnWillEmbed(
|
| - mojo::View* view,
|
| - mojo::InterfaceRequest<mojo::ServiceProvider>* services,
|
| - mojo::ServiceProviderPtr* exposed_services) {
|
| +void Browser::OnEmbedForDescendant(mojo::View* view,
|
| + mojo::URLRequestPtr request,
|
| + mojo::ViewManagerClientPtr* client) {
|
| // TODO(sky): move this to Frame/FrameTree.
|
| Frame* frame = Frame::FindFirstFrameAncestor(view);
|
| if (!frame) {
|
| // TODO(sky): add requestor url so that we can return false if it's not
|
| // an app we expect.
|
| - return true;
|
| + mojo::ApplicationConnection* connection =
|
| + app_->ConnectToApplication(request.Pass());
|
| + connection->ConnectToService(client);
|
| + return;
|
| }
|
|
|
| Frame* parent = frame;
|
| @@ -141,12 +138,11 @@ bool Browser::OnWillEmbed(
|
| frame = nullptr;
|
| }
|
|
|
| - scoped_ptr<FrameServices> frame_services(new FrameServices);
|
| - frame_services->Init(services, exposed_services);
|
| - FrameTreeClient* frame_tree_client = frame_services->frame_tree_client();
|
| - frame_tree_->CreateAndAddFrame(view, parent, frame_tree_client,
|
| - frame_services.Pass());
|
| - return true;
|
| + scoped_ptr<FrameConnection> frame_connection(new FrameConnection);
|
| + frame_connection->Init(app_, request.Pass(), client);
|
| + frame_tree_->CreateAndAddFrame(view, parent,
|
| + frame_connection->frame_tree_client(),
|
| + frame_connection.Pass());
|
| }
|
|
|
| void Browser::OnViewManagerDestroyed(mojo::ViewManager* view_manager) {
|
| @@ -168,12 +164,10 @@ void Browser::OpenURL(const mojo::String& url) {
|
| ReplaceContentWithRequest(request.Pass());
|
| }
|
|
|
| -void Browser::Embed(mojo::URLRequestPtr request,
|
| - mojo::InterfaceRequest<mojo::ServiceProvider> services,
|
| - mojo::ServiceProviderPtr exposed_services) {
|
| - std::string string_url = request->url.To<std::string>();
|
| +void Browser::Embed(mojo::URLRequestPtr request) {
|
| + const std::string string_url = request->url.To<std::string>();
|
| if (string_url == "mojo:omnibox") {
|
| - ShowOmnibox(request.Pass(), services.Pass(), exposed_services.Pass());
|
| + ShowOmnibox(request.Pass());
|
| return;
|
| }
|
|
|
| @@ -191,17 +185,15 @@ void Browser::Embed(mojo::URLRequestPtr request,
|
| if (changed)
|
| ui_->OnURLChanged();
|
|
|
| - merged_service_provider_.reset(
|
| - new MergedServiceProvider(exposed_services.Pass(), this));
|
| - scoped_ptr<FrameServices> frame_services(new FrameServices);
|
| - // TODO(sky): FrameServices and MergedServiceProvider need to be combined.
|
| - // TODO(sky): FrameServices needs to man in the middle services.
|
| - frame_services->Init(&services, nullptr);
|
| - FrameTreeClient* frame_tree_client = frame_services->frame_tree_client();
|
| - frame_tree_.reset(new FrameTree(content_, nullptr, frame_tree_client,
|
| - frame_services.Pass()));
|
| - content_->Embed(request.Pass(), services.Pass(),
|
| - merged_service_provider_->GetServiceProviderPtr().Pass());
|
| + scoped_ptr<FrameConnection> frame_connection(new FrameConnection);
|
| + mojo::ViewManagerClientPtr view_manager_client;
|
| + frame_connection->Init(app_, request.Pass(), &view_manager_client);
|
| + frame_connection->application_connection()->AddService<mojo::NavigatorHost>(
|
| + this);
|
| + frame_tree_.reset(new FrameTree(content_, nullptr,
|
| + frame_connection->frame_tree_client(),
|
| + frame_connection.Pass()));
|
| + content_->Embed(view_manager_client.Pass());
|
|
|
| navigator_host_.RecordNavigation(gurl.spec());
|
| }
|
| @@ -216,17 +208,18 @@ void Browser::Create(mojo::ApplicationConnection* connection,
|
| view_embedder_bindings_.AddBinding(this, request.Pass());
|
| }
|
|
|
| -void Browser::ShowOmnibox(
|
| - mojo::URLRequestPtr request,
|
| - mojo::InterfaceRequest<mojo::ServiceProvider> services,
|
| - mojo::ServiceProviderPtr exposed_services) {
|
| +void Browser::ShowOmnibox(mojo::URLRequestPtr request) {
|
| if (!omnibox_) {
|
| omnibox_ = root_->view_manager()->CreateView();
|
| root_->AddChild(omnibox_);
|
| omnibox_->SetVisible(true);
|
| omnibox_->SetBounds(root_->bounds());
|
| }
|
| - omnibox_->Embed(request.Pass(), services.Pass(), exposed_services.Pass());
|
| + mojo::ViewManagerClientPtr view_manager_client;
|
| + mojo::ApplicationConnection* connection =
|
| + app_->ConnectToApplication(request.Pass());
|
| + connection->ConnectToService(&view_manager_client);
|
| + omnibox_->Embed(view_manager_client.Pass());
|
| }
|
|
|
| } // namespace mandoline
|
|
|