| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sky/tools/debugger/debugger.h" | 5 #include "sky/tools/debugger/debugger.h" |
| 6 | 6 |
| 7 #include "services/window_manager/basic_focus_rules.h" | 7 #include "services/window_manager/basic_focus_rules.h" |
| 8 | 8 |
| 9 namespace sky { | 9 namespace sky { |
| 10 namespace debugger { | 10 namespace debugger { |
| 11 | 11 |
| 12 SkyDebugger::SkyDebugger() | 12 SkyDebugger::SkyDebugger() |
| 13 : window_manager_app_(new window_manager::WindowManagerApp(this, this)), | 13 : window_manager_app_(new window_manager::WindowManagerApp(this, this)), |
| 14 root_(nullptr), | 14 root_(nullptr), |
| 15 content_(nullptr), | 15 content_(nullptr), |
| 16 navigator_host_factory_(this), | 16 navigator_host_factory_(this), |
| 17 weak_factory_(this) { | 17 weak_factory_(this) { |
| 18 exposed_services_impl_.AddService(&navigator_host_factory_); |
| 18 } | 19 } |
| 19 | 20 |
| 20 SkyDebugger::~SkyDebugger() { | 21 SkyDebugger::~SkyDebugger() { |
| 21 } | 22 } |
| 22 | 23 |
| 23 base::WeakPtr<SkyDebugger> SkyDebugger::GetWeakPtr() { | 24 base::WeakPtr<SkyDebugger> SkyDebugger::GetWeakPtr() { |
| 24 return weak_factory_.GetWeakPtr(); | 25 return weak_factory_.GetWeakPtr(); |
| 25 } | 26 } |
| 26 | 27 |
| 27 void SkyDebugger::Initialize(mojo::ApplicationImpl* app) { | 28 void SkyDebugger::Initialize(mojo::ApplicationImpl* app) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 38 | 39 |
| 39 bool SkyDebugger::ConfigureOutgoingConnection( | 40 bool SkyDebugger::ConfigureOutgoingConnection( |
| 40 mojo::ApplicationConnection* connection) { | 41 mojo::ApplicationConnection* connection) { |
| 41 window_manager_app_->ConfigureOutgoingConnection(connection); | 42 window_manager_app_->ConfigureOutgoingConnection(connection); |
| 42 connection->AddService(this); | 43 connection->AddService(this); |
| 43 return true; | 44 return true; |
| 44 } | 45 } |
| 45 | 46 |
| 46 void SkyDebugger::OnEmbed( | 47 void SkyDebugger::OnEmbed( |
| 47 mojo::View* root, | 48 mojo::View* root, |
| 48 mojo::ServiceProviderImpl* exported_services, | 49 mojo::InterfaceRequest<mojo::ServiceProvider> services, |
| 49 scoped_ptr<mojo::ServiceProvider> imported_services) { | 50 mojo::ServiceProviderPtr exposed_services) { |
| 50 root_ = root; | 51 root_ = root; |
| 51 root_->AddObserver(this); | 52 root_->AddObserver(this); |
| 52 | 53 |
| 53 window_manager_app_->SetViewportSize(gfx::Size(320, 640)); | 54 window_manager_app_->SetViewportSize(gfx::Size(320, 640)); |
| 54 | 55 |
| 55 content_ = root->view_manager()->CreateView(); | 56 content_ = root->view_manager()->CreateView(); |
| 56 content_->SetBounds(root_->bounds()); | 57 content_->SetBounds(root_->bounds()); |
| 57 root_->AddChild(content_); | 58 root_->AddChild(content_); |
| 58 content_->SetVisible(true); | 59 content_->SetVisible(true); |
| 59 | 60 |
| 60 window_manager_app_->InitFocus( | 61 window_manager_app_->InitFocus( |
| 61 make_scoped_ptr(new window_manager::BasicFocusRules(root_))); | 62 make_scoped_ptr(new window_manager::BasicFocusRules(root_))); |
| 62 | 63 |
| 63 if (!pending_url_.empty()) | 64 if (!pending_url_.empty()) |
| 64 NavigateToURL(pending_url_); | 65 NavigateToURL(pending_url_); |
| 65 } | 66 } |
| 66 | 67 |
| 67 void SkyDebugger::Embed( | 68 void SkyDebugger::Embed(const mojo::String& url, |
| 68 const mojo::String& url, | 69 mojo::InterfaceRequest<mojo::ServiceProvider> services, |
| 69 mojo::InterfaceRequest<mojo::ServiceProvider> service_provider) { | 70 mojo::ServiceProviderPtr exposed_services) { |
| 70 scoped_ptr<mojo::ServiceProviderImpl> exported_services( | 71 content_->Embed(url, nullptr, nullptr); |
| 71 new mojo::ServiceProviderImpl()); | |
| 72 // exported_services->AddService(TBD) -- no exported services for now. | |
| 73 content_->Embed(url, exported_services.Pass()); | |
| 74 } | 72 } |
| 75 | 73 |
| 76 void SkyDebugger::OnViewManagerDisconnected(mojo::ViewManager* view_manager) { | 74 void SkyDebugger::OnViewManagerDisconnected(mojo::ViewManager* view_manager) { |
| 77 root_ = nullptr; | 75 root_ = nullptr; |
| 78 } | 76 } |
| 79 | 77 |
| 80 void SkyDebugger::OnViewDestroyed(mojo::View* view) { | 78 void SkyDebugger::OnViewDestroyed(mojo::View* view) { |
| 81 view->RemoveObserver(this); | 79 view->RemoveObserver(this); |
| 82 } | 80 } |
| 83 | 81 |
| 84 void SkyDebugger::OnViewBoundsChanged(mojo::View* view, | 82 void SkyDebugger::OnViewBoundsChanged(mojo::View* view, |
| 85 const mojo::Rect& old_bounds, | 83 const mojo::Rect& old_bounds, |
| 86 const mojo::Rect& new_bounds) { | 84 const mojo::Rect& new_bounds) { |
| 87 content_->SetBounds(new_bounds); | 85 content_->SetBounds(new_bounds); |
| 88 } | 86 } |
| 89 | 87 |
| 90 void SkyDebugger::Create(mojo::ApplicationConnection* connection, | 88 void SkyDebugger::Create(mojo::ApplicationConnection* connection, |
| 91 mojo::InterfaceRequest<Debugger> request) { | 89 mojo::InterfaceRequest<Debugger> request) { |
| 92 mojo::WeakBindToRequest(this, &request); | 90 mojo::WeakBindToRequest(this, &request); |
| 93 } | 91 } |
| 94 | 92 |
| 95 void SkyDebugger::NavigateToURL(const mojo::String& url) { | 93 void SkyDebugger::NavigateToURL(const mojo::String& url) { |
| 96 // We can get Navigate commands before we've actually been | 94 // We can get Navigate commands before we've actually been |
| 97 // embedded into the view and content_ created. | 95 // embedded into the view and content_ created. |
| 98 // Just save the last one. | 96 // Just save the last one. |
| 99 if (content_) { | 97 if (content_) { |
| 100 scoped_ptr<mojo::ServiceProviderImpl> exported_services( | 98 mojo::ServiceProviderPtr exposed_services; |
| 101 new mojo::ServiceProviderImpl()); | 99 exposed_services_impl_.Bind(GetProxy(&exposed_services)); |
| 102 exported_services->AddService(&navigator_host_factory_); | 100 content_->Embed(url, GetProxy(&viewer_services_), exposed_services.Pass()); |
| 103 viewer_services_ = content_->Embed(url, exported_services.Pass()); | |
| 104 } else { | 101 } else { |
| 105 pending_url_ = url; | 102 pending_url_ = url; |
| 106 } | 103 } |
| 107 } | 104 } |
| 108 | 105 |
| 109 void SkyDebugger::Shutdown() { | 106 void SkyDebugger::Shutdown() { |
| 110 // Make sure we shut down mojo before quitting the message loop or things | 107 // Make sure we shut down mojo before quitting the message loop or things |
| 111 // like blink::shutdown() may try to talk to the message loop and crash. | 108 // like blink::shutdown() may try to talk to the message loop and crash. |
| 112 window_manager_app_.reset(); | 109 window_manager_app_.reset(); |
| 113 | 110 |
| 114 // TODO(eseidel): This still hits an X11 error which I don't understand | 111 // TODO(eseidel): This still hits an X11 error which I don't understand |
| 115 // "X Error of failed request: GLXBadDrawable", crbug.com/430581 | 112 // "X Error of failed request: GLXBadDrawable", crbug.com/430581 |
| 116 mojo::ApplicationImpl::Terminate(); | 113 mojo::ApplicationImpl::Terminate(); |
| 117 // TODO(eseidel): REMOVE THIS, temporarily fast-exit now to stop confusing | 114 // TODO(eseidel): REMOVE THIS, temporarily fast-exit now to stop confusing |
| 118 // folks with exit-time crashes due to GLXBadDrawable above. | 115 // folks with exit-time crashes due to GLXBadDrawable above. |
| 119 exit(0); | 116 exit(0); |
| 120 } | 117 } |
| 121 | 118 |
| 122 void SkyDebugger::InjectInspector() { | 119 void SkyDebugger::InjectInspector() { |
| 123 InspectorServicePtr inspector_service; | 120 InspectorServicePtr inspector_service; |
| 124 mojo::ConnectToService(viewer_services_.get(), &inspector_service); | 121 mojo::ConnectToService(viewer_services_.get(), &inspector_service); |
| 125 inspector_service->Inject(); | 122 inspector_service->Inject(); |
| 126 } | 123 } |
| 127 | 124 |
| 128 } // namespace debugger | 125 } // namespace debugger |
| 129 } // namespace sky | 126 } // namespace sky |
| OLD | NEW |