提交 95b5d5df 编写于 作者: A Adam Barth

Update uses of Mojo to new interfaces

上级 1266be14
......@@ -235,7 +235,7 @@ hooks = [
},
# Pull the mojom parser binaries using checked-in hashes.
{
'name': 'mojom_parser',
'name': 'mojom_tool',
'pattern': '',
'action': [ 'download_from_google_storage',
'--no_resume',
......@@ -243,11 +243,11 @@ hooks = [
'--platform=linux*',
'--no_auth',
'--bucket', 'mojo/mojom_parser/linux64',
'-s', 'src/mojo/public/tools/bindings/mojom_parser/bin/linux64/mojom_parser.sha1',
'-s', 'src/mojo/public/tools/bindings/mojom_tool/bin/linux64/mojom.sha1',
],
},
{
'name': 'mojom_parser',
'name': 'mojom_tool',
'pattern': '',
'action': [ 'download_from_google_storage',
'--no_resume',
......@@ -255,7 +255,7 @@ hooks = [
'--platform=darwin',
'--no_auth',
'--bucket', 'mojo/mojom_parser/mac64',
'-s', 'src/mojo/public/tools/bindings/mojom_parser/bin/mac64/mojom_parser.sha1',
'-s', 'src/mojo/public/tools/bindings/mojom_tool/bin/mac64/mojom.sha1',
],
},
{
......
......@@ -12,12 +12,12 @@ namespace mojo {
GLContext::Observer::~Observer() {}
GLContext::GLContext(CommandBufferPtr command_buffer) : weak_factory_(this) {
context_ = MGLCreateContext(
MGL_API_VERSION_GLES2,
command_buffer.PassInterface().PassHandle().release().value(),
MGL_NO_CONTEXT, &ContextLostThunk, this,
Environment::GetDefaultAsyncWaiter());
GLContext::GLContext(InterfaceHandle<CommandBuffer> command_buffer)
: weak_factory_(this) {
context_ = MGLCreateContext(MGL_API_VERSION_GLES2,
command_buffer.PassHandle().release().value(),
MGL_NO_CONTEXT, &ContextLostThunk, this,
Environment::GetDefaultAsyncWaiter());
DCHECK(context_ != MGL_NO_CONTEXT);
}
......@@ -32,13 +32,13 @@ base::WeakPtr<GLContext> GLContext::CreateOffscreen(
GetProxy(&native_viewport), nullptr);
GpuPtr gpu_service;
ConnectToService(native_viewport.get(), &gpu_service);
CommandBufferPtr command_buffer;
InterfaceHandle<CommandBuffer> command_buffer;
gpu_service->CreateOffscreenGLES2Context(GetProxy(&command_buffer));
return CreateFromCommandBuffer(command_buffer.Pass());
}
base::WeakPtr<GLContext> GLContext::CreateFromCommandBuffer(
CommandBufferPtr command_buffer) {
InterfaceHandle<CommandBuffer> command_buffer) {
return (new GLContext(command_buffer.Pass()))->weak_factory_.GetWeakPtr();
}
......
......@@ -33,7 +33,7 @@ class GLContext {
// Creates a GL context from a command buffer.
static base::WeakPtr<GLContext> CreateFromCommandBuffer(
CommandBufferPtr command_buffer);
InterfaceHandle<CommandBuffer> command_buffer);
void MakeCurrent();
bool IsCurrent();
......@@ -43,7 +43,7 @@ class GLContext {
void RemoveObserver(Observer* observer);
private:
explicit GLContext(CommandBufferPtr command_buffer);
explicit GLContext(InterfaceHandle<CommandBuffer> command_buffer);
~GLContext();
static void ContextLostThunk(void* self);
......
......@@ -40,9 +40,9 @@ void DartTakeServicesProvidedToEmbedder(Dart_NativeArguments args) {
args, GetMojoServices()->TakeServicesProvidedToEmbedder().value());
}
void DartTakeViewHostHandle(Dart_NativeArguments args) {
void DartTakeViewHandle(Dart_NativeArguments args) {
Dart_SetIntegerReturnValue(
args, GetMojoServices()->TakeViewHostHandle().value());
args, GetMojoServices()->TakeViewHandle().value());
}
} // namespace
......@@ -53,7 +53,7 @@ void MojoServices::RegisterNatives(DartLibraryNatives* natives) {
{"takeServicesProvidedByEmbedder", DartTakeServicesProvidedByEmbedder, 0, true},
{"takeServicesProvidedToEmbedder", DartTakeServicesProvidedToEmbedder, 0, true},
{"takeShellProxyHandle", DartTakeShellProxyHandle, 0, true},
{"takeViewHostHandle", DartTakeViewHostHandle, 0, true},
{"takeViewHandle", DartTakeViewHandle, 0, true},
});
}
......@@ -84,23 +84,23 @@ MojoServices::~MojoServices() {
}
mojo::Handle MojoServices::TakeShellProxy() {
return services_ ? services_->shell.PassInterface().PassHandle().release() : mojo::Handle();
return services_ ? services_->shell.PassHandle().release() : mojo::Handle();
}
mojo::Handle MojoServices::TakeServicesProvidedByEmbedder() {
return services_from_embedder_.PassInterface().PassHandle().release();
return services_from_embedder_.PassInterfaceHandle().PassHandle().release();
}
mojo::Handle MojoServices::TakeRootBundleHandle() {
return root_bundle_.PassInterface().PassHandle().release();
return root_bundle_.PassInterfaceHandle().PassHandle().release();
}
mojo::Handle MojoServices::TakeServicesProvidedToEmbedder() {
return services_provided_to_embedder_.PassMessagePipe().release();
}
mojo::Handle MojoServices::TakeViewHostHandle() {
return services_ ? services_->view_host.PassInterface().PassHandle().release() : mojo::Handle();
mojo::Handle MojoServices::TakeViewHandle() {
return services_ ? services_->view.PassHandle().release() : mojo::Handle();
}
} // namespace blink
......@@ -33,7 +33,7 @@ class MojoServices {
mojo::Handle TakeServicesProvidedByEmbedder();
mojo::Handle TakeServicesProvidedToEmbedder();
mojo::Handle TakeRootBundleHandle();
mojo::Handle TakeViewHostHandle();
mojo::Handle TakeViewHandle();
private:
explicit MojoServices(sky::ServicesDataPtr services,
......
......@@ -8,4 +8,4 @@ int takeRootBundleHandle() native "takeRootBundleHandle";
int takeServicesProvidedByEmbedder() native "takeServicesProvidedByEmbedder";
int takeServicesProvidedToEmbedder() native "takeServicesProvidedToEmbedder";
int takeShellProxyHandle() native "takeShellProxyHandle";
int takeViewHostHandle() native "takeViewHostHandle";
int takeViewHandle() native "takeViewHandle";
......@@ -31,7 +31,7 @@ struct ServicesData {
mojo.Shell? shell;
mojo.ServiceProvider? services_provided_by_embedder;
mojo.ServiceProvider&? services_provided_to_embedder;
mojo.ui.ViewHost? view_host;
mojo.ui.View? view;
mojo.gfx.composition.SceneScheduler? scene_scheduler;
};
......
......@@ -76,8 +76,7 @@ static void Init(JNIEnv* env,
g_java_message_loop.Get().reset(new base::MessageLoopForUI);
base::MessageLoopForUI::current()->Start();
mojo::embedder::Init(std::unique_ptr<mojo::embedder::PlatformSupport>(
new mojo::embedder::SimplePlatformSupport()));
mojo::embedder::Init(mojo::embedder::CreateSimplePlatformSupport());
CHECK(gfx::GLSurface::InitializeOneOff());
Shell::InitStandalone();
......
......@@ -27,8 +27,7 @@ int main(int argc, const char* argv[]) {
base::MessageLoop message_loop;
mojo::embedder::Init(std::unique_ptr<mojo::embedder::PlatformSupport>(
new mojo::embedder::SimplePlatformSupport()));
mojo::embedder::Init(mojo::embedder::CreateSimplePlatformSupport());
sky::shell::Shell::InitStandalone();
......
......@@ -86,8 +86,7 @@ int PlatformMacMain(int argc,
message_loop->Attach();
#endif
mojo::embedder::Init(std::unique_ptr<mojo::embedder::PlatformSupport>(
new mojo::embedder::SimplePlatformSupport()));
mojo::embedder::Init(mojo::embedder::CreateSimplePlatformSupport());
CHECK(gfx::GLSurface::InitializeOneOff());
sky::shell::Shell::InitStandalone();
......
......@@ -25,11 +25,11 @@ ApplicationImpl::~ApplicationImpl() {
}
}
void ApplicationImpl::Initialize(mojo::ShellPtr shell,
void ApplicationImpl::Initialize(mojo::InterfaceHandle<mojo::Shell> shell,
mojo::Array<mojo::String> args,
const mojo::String& url) {
DCHECK(initial_response_);
shell_ = shell.Pass();
shell_ = mojo::ShellPtr::Create(shell.Pass());
url_ = url;
UnpackInitialResponse(shell_.get());
}
......@@ -37,7 +37,7 @@ void ApplicationImpl::Initialize(mojo::ShellPtr shell,
void ApplicationImpl::AcceptConnection(
const mojo::String& requestor_url,
mojo::InterfaceRequest<mojo::ServiceProvider> outgoing_services,
mojo::ServiceProviderPtr incoming_services,
mojo::InterfaceHandle<mojo::ServiceProvider> incoming_services,
const mojo::String& resolved_url) {
service_provider_bindings_.AddBinding(this, outgoing_services.Pass());
}
......@@ -56,7 +56,7 @@ void ApplicationImpl::ConnectToService(const mojo::String& service_name,
void ApplicationImpl::ConnectToApplication(
const mojo::String& application_url,
mojo::InterfaceRequest<mojo::ServiceProvider> services,
mojo::ServiceProviderPtr exposed_services) {
mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) {
shell_->ConnectToApplication(application_url,
services.Pass(),
exposed_services.Pass());
......@@ -68,10 +68,9 @@ void ApplicationImpl::CreateApplicationConnector(
}
void ApplicationImpl::CreateView(
mojo::InterfaceRequest<mojo::ServiceProvider> outgoing_services,
mojo::ServiceProviderPtr incoming_services,
const mojo::ui::ViewProvider::CreateViewCallback& callback) {
mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner,
mojo::InterfaceRequest<mojo::ServiceProvider> outgoing_services,
mojo::InterfaceHandle<mojo::ServiceProvider> incoming_services) {
// TODO(abarth): Rather than proxying the shell, we should give Dart an
// ApplicationConnectorPtr instead of a ShellPtr.
mojo::ShellPtr shell;
......@@ -82,7 +81,7 @@ void ApplicationImpl::CreateView(
services->services_provided_by_embedder = incoming_services.Pass();
services->services_provided_to_embedder = outgoing_services.Pass();
ViewImpl* view = new ViewImpl(services.Pass(), url_, callback);
ViewImpl* view = new ViewImpl(view_owner.Pass(), services.Pass(), url_);
view->Run(flx_path_);
}
......
......@@ -29,13 +29,13 @@ class ApplicationImpl : public mojo::Application,
private:
// mojo::Application
void Initialize(mojo::ShellPtr shell,
void Initialize(mojo::InterfaceHandle<mojo::Shell> shell,
mojo::Array<mojo::String> args,
const mojo::String& url) override;
void AcceptConnection(
const mojo::String& requestor_url,
mojo::InterfaceRequest<mojo::ServiceProvider> outgoing_services,
mojo::ServiceProviderPtr incoming_services,
mojo::InterfaceHandle<mojo::ServiceProvider> incoming_services,
const mojo::String& resolved_url) override;
void RequestQuit() override;
......@@ -47,15 +47,15 @@ class ApplicationImpl : public mojo::Application,
void ConnectToApplication(
const mojo::String& application_url,
mojo::InterfaceRequest<mojo::ServiceProvider> services,
mojo::ServiceProviderPtr exposed_services) override;
mojo::InterfaceHandle<mojo::ServiceProvider> exposed_services) override;
void CreateApplicationConnector(
mojo::InterfaceRequest<mojo::ApplicationConnector> request) override;
// mojo::ui::ViewProvider
void CreateView(
mojo::InterfaceRequest<mojo::ServiceProvider> services,
mojo::ServiceProviderPtr exposed_services,
const mojo::ui::ViewProvider::CreateViewCallback& callback) override;
mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner,
mojo::InterfaceRequest<mojo::ServiceProvider> incoming_services,
mojo::InterfaceHandle<mojo::ServiceProvider> outgoing_services) override;
void UnpackInitialResponse(mojo::Shell* shell);
......
......@@ -11,22 +11,25 @@
namespace sky {
namespace shell {
ViewImpl::ViewImpl(ServicesDataPtr services,
const std::string& url,
const mojo::ui::ViewProvider::CreateViewCallback& callback)
ViewImpl::ViewImpl(mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner,
ServicesDataPtr services,
const std::string& url)
: binding_(this), url_(url), listener_binding_(this) {
DCHECK(services);
mojo::ui::ViewHostPtr view_host;
// Once we're done invoking |Shell|, we put it back inside |services| and pass
// it off.
mojo::ShellPtr shell = mojo::ShellPtr::Create(services->shell.Pass());
// Views
mojo::ConnectToService(
services->shell.get(), "mojo:view_manager_service", &view_manager_);
shell.get(), "mojo:view_manager_service", &view_manager_);
mojo::ui::ViewPtr view;
binding_.Bind(mojo::GetProxy(&view));
view_manager_->RegisterView(
view.Pass(), mojo::GetProxy(&view_host), url_, callback);
view_host->GetServiceProvider(mojo::GetProxy(&view_service_provider_));
mojo::ui::ViewListenerPtr view_listener;
binding_.Bind(mojo::GetProxy(&view_listener));
view_manager_->CreateView(
mojo::GetProxy(&view), view_owner.Pass(), view_listener.Pass(), url_);
view->GetServiceProvider(mojo::GetProxy(&view_service_provider_));
// Input
mojo::ConnectToService(view_service_provider_.get(), &input_connection_);
......@@ -36,16 +39,18 @@ ViewImpl::ViewImpl(ServicesDataPtr services,
// Compositing
mojo::gfx::composition::ScenePtr scene;
view_host->CreateScene(mojo::GetProxy(&scene));
view->CreateScene(mojo::GetProxy(&scene));
scene->GetScheduler(mojo::GetProxy(&services->scene_scheduler));
services->view_host = view_host.Pass();
services->view = view.Pass();
// Engine
shell_view_.reset(new ShellView(Shell::Shared()));
shell_view_->view()->ConnectToEngine(GetProxy(&engine_));
mojo::ApplicationConnectorPtr connector;
services->shell->CreateApplicationConnector(mojo::GetProxy(&connector));
shell->CreateApplicationConnector(mojo::GetProxy(&connector));
platform_view()->InitRasterizer(connector.Pass(), scene.Pass());
services->shell = shell.Pass();
engine_->SetServices(services.Pass());
}
......
......@@ -20,18 +20,18 @@
namespace sky {
namespace shell {
class ViewImpl : public mojo::ui::View,
class ViewImpl : public mojo::ui::ViewListener,
public mojo::ui::InputListener {
public:
ViewImpl(ServicesDataPtr services,
const std::string& url,
const mojo::ui::ViewProvider::CreateViewCallback& callback);
ViewImpl(mojo::InterfaceRequest<mojo::ui::ViewOwner> view_owner,
ServicesDataPtr services,
const std::string& url);
~ViewImpl() override;
void Run(base::FilePath flx_path);
private:
// mojo::ui::View
// mojo::ui::ViewListener
void OnLayout(mojo::ui::ViewLayoutParamsPtr layout_params,
mojo::Array<uint32_t> children_needing_layout,
const OnLayoutCallback& callback) override;
......@@ -45,7 +45,7 @@ class ViewImpl : public mojo::ui::View,
return static_cast<PlatformViewMojo*>(shell_view_->view());
}
mojo::StrongBinding<mojo::ui::View> binding_;
mojo::StrongBinding<mojo::ui::ViewListener> binding_;
std::string url_;
mojo::ui::ViewManagerPtr view_manager_;
mojo::ServiceProviderPtr view_service_provider_;
......
......@@ -29,8 +29,8 @@ class Animator {
void set_vsync_provider(vsync::VSyncProviderPtr vsync_provider);
void set_scene_scheduler(
mojo::gfx::composition::SceneSchedulerPtr scene_scheduler) {
scene_scheduler_ = scene_scheduler.Pass();
mojo::InterfaceHandle<mojo::gfx::composition::SceneScheduler> scene_scheduler) {
scene_scheduler_ = mojo::gfx::composition::SceneSchedulerPtr::Create(scene_scheduler.Pass());
}
......
......@@ -104,8 +104,8 @@ void Engine::SetServices(ServicesDataPtr services) {
services_ = services.Pass();
if (services_->services_provided_by_embedder) {
services_provided_by_embedder_ =
services_->services_provided_by_embedder.Pass();
services_provided_by_embedder_ = mojo::ServiceProviderPtr::Create(
services_->services_provided_by_embedder.Pass());
service_provider_impl_.set_fallback_service_provider(
services_provided_by_embedder_.get());
}
......@@ -117,11 +117,16 @@ void Engine::SetServices(ServicesDataPtr services) {
#if defined(OS_ANDROID) || defined(OS_IOS)
vsync::VSyncProviderPtr vsync_provider;
if (services_->shell) {
mojo::ConnectToService(services_->shell.get(), "mojo:vsync",
&vsync_provider);
// We bind and unbind our Shell here, since this is the only place we use
// it in this class.
auto shell = mojo::ShellPtr::Create(services_->shell.Pass());
mojo::ConnectToService(shell.get(), "mojo:vsync", &vsync_provider);
services_->shell = shell.Pass();
} else {
mojo::ConnectToService(services_provided_by_embedder_.get(),
&vsync_provider);
auto embedder_services = mojo::ServiceProviderPtr::Create(
services_->services_provided_by_embedder.Pass());
mojo::ConnectToService(embedder_services.get(), &vsync_provider);
services_->services_provided_by_embedder = embedder_services.Pass();
}
animator_->Reset();
animator_->set_vsync_provider(vsync_provider.Pass());
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册