| // 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 "sky/viewer/services/inspector_impl.h" |
| |
| #include "base/bind.h" |
| #include "sky/engine/public/web/WebDocument.h" |
| #include "sky/engine/public/web/WebElement.h" |
| #include "sky/engine/public/web/WebFrame.h" |
| #include "sky/engine/public/web/WebView.h" |
| #include "sky/services/inspector/inspector.mojom.h" |
| #include "sky/viewer/document_view.h" |
| |
| namespace sky { |
| |
| InspectorServiceImpl::InspectorServiceImpl(DocumentView* view) |
| : view_(view->GetWeakPtr()) { |
| } |
| |
| InspectorServiceImpl::~InspectorServiceImpl() { |
| } |
| |
| void Ignored() {} |
| |
| void InspectorServiceImpl::Inject() { |
| if (!view_) |
| return; |
| |
| mojo::ServiceProviderPtr inspector_service_provider; |
| view_->shell()->ConnectToApplication("mojo:sky_inspector_server", |
| GetProxy(&inspector_service_provider), |
| nullptr); |
| InspectorServerPtr inspector; |
| mojo::ConnectToService(inspector_service_provider.get(), &inspector); |
| inspector->Listen(9898, base::Bind(&Ignored)); |
| // Listen drops existing agents/backends, wait before registering new ones. |
| inspector.WaitForIncomingMethodCall(); |
| |
| view_->web_view()->injectModule("/sky/framework/inspector/inspector.sky"); |
| view_->StartDebuggerInspectorBackend(); |
| } |
| |
| } // namespace sky |