Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Unified Diff: services/navigation/view_impl.cc

Issue 2585593002: Converts services/navigation to use aura-mus (Closed)
Patch Set: comment Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « services/navigation/view_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/navigation/view_impl.cc
diff --git a/services/navigation/view_impl.cc b/services/navigation/view_impl.cc
index bb6145d7549c0e39ce39f35d0a6211e29519f299..da3a043a77e757a1290ee1726bc16ec9184f2ab6 100644
--- a/services/navigation/view_impl.cc
+++ b/services/navigation/view_impl.cc
@@ -17,7 +17,8 @@
#include "content/public/browser/notification_types.h"
#include "content/public/browser/web_contents.h"
#include "services/service_manager/public/cpp/connector.h"
-#include "services/ui/public/cpp/window_tree_client.h"
+#include "ui/aura/mus/window_tree_client.h"
+#include "ui/aura/mus/window_tree_host_mus.h"
#include "ui/views/controls/webview/webview.h"
#include "ui/views/mus/native_widget_mus.h"
#include "ui/views/widget/widget.h"
@@ -80,7 +81,16 @@ ViewImpl::ViewImpl(std::unique_ptr<service_manager::Connector> connector,
registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_CHANGED,
content::Source<content::NavigationController>(controller));
}
-ViewImpl::~ViewImpl() {}
+
+ViewImpl::~ViewImpl() {
+ DeleteTreeAndWidget();
+}
+
+void ViewImpl::DeleteTreeAndWidget() {
+ widget_.reset();
+ window_tree_host_.reset();
+ window_tree_client_.reset();
+}
void ViewImpl::NavigateTo(const GURL& url) {
web_view_->GetWebContents()->GetController().LoadURL(
@@ -111,8 +121,8 @@ void ViewImpl::Stop() {
}
void ViewImpl::GetWindowTreeClient(ui::mojom::WindowTreeClientRequest request) {
- window_tree_client_ =
- base::MakeUnique<ui::WindowTreeClient>(this, nullptr, std::move(request));
+ window_tree_client_ = base::MakeUnique<aura::WindowTreeClient>(
+ connector_.get(), this, nullptr, std::move(request));
}
void ViewImpl::ShowInterstitial(const std::string& html) {
@@ -258,29 +268,48 @@ void ViewImpl::Observe(int type,
}
}
-void ViewImpl::OnEmbed(ui::Window* root) {
+void ViewImpl::OnEmbed(
+ std::unique_ptr<aura::WindowTreeHostMus> window_tree_host) {
+ // TODO: Supplying a WindowTreeHostMus isn't particularly ideal in this case.
+ // In particular it would be nice if the WindowTreeClientDelegate could create
+ // its own WindowTreeHostMus, that way this code could directly create a
+ // DesktopWindowTreeTreeHostMus.
+ window_tree_host_ = std::move(window_tree_host);
DCHECK(!widget_.get());
+ // TODO: fix this. The following won't work if multiple WindowTreeClients
+ // are used at the same time. The best fix is to have the ability to specify
+ // a WindowTreeClient when DesktopNativeWidgetAura is created so that it can
+ // create WindowPortMus with the correct client.
widget_.reset(new views::Widget);
views::Widget::InitParams params(
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.delegate = this;
- params.native_widget = new views::NativeWidgetMus(
- widget_.get(), root, ui::mojom::CompositorFrameSinkType::DEFAULT);
widget_->Init(params);
widget_->Show();
}
-void ViewImpl::OnEmbedRootDestroyed(ui::Window* root) {
- window_tree_client_.reset();
+void ViewImpl::OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) {
+ DCHECK_EQ(window_tree_host, window_tree_host_.get());
+ DeleteTreeAndWidget();
}
-void ViewImpl::OnLostConnection(ui::WindowTreeClient* client) {
- window_tree_client_.reset();
+void ViewImpl::OnLostConnection(aura::WindowTreeClient* client) {
+ DeleteTreeAndWidget();
}
void ViewImpl::OnPointerEventObserved(const ui::PointerEvent& event,
- ui::Window* target) {}
+ aura::Window* target) {}
+
+aura::client::CaptureClient* ViewImpl::GetCaptureClient() {
+ // TODO: wire this up. This typically comes from WMState.
+ return nullptr;
+}
+
+aura::PropertyConverter* ViewImpl::GetPropertyConverter() {
+ // TODO: wire this up.
+ return nullptr;
+}
views::View* ViewImpl::GetContentsView() {
return web_view_;
« no previous file with comments | « services/navigation/view_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698