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

Unified Diff: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc

Issue 474883003: Move focus from the view manager to the window manager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 months 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
Index: mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
diff --git a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
index 7a3bb1fe940f8272a94726aecb1acb3a4558e643..ec4ec6125e49e64a32221d8882b6c50eecc8f67a 100644
--- a/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
+++ b/mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.cc
@@ -5,6 +5,7 @@
#include "mojo/services/public/cpp/view_manager/lib/view_manager_client_impl.h"
#include "base/bind.h"
+#include "base/command_line.h"
#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "mojo/public/cpp/application/application_connection.h"
@@ -116,12 +117,24 @@ bool CreateMapAndDupSharedBuffer(size_t size,
return true;
}
-ViewManagerClientImpl::ViewManagerClientImpl(ViewManagerDelegate* delegate)
+ViewManagerClientImpl::ViewManagerClientImpl(
+ ViewManagerDelegate* delegate,
+ ApplicationConnection* app_connection)
: connected_(false),
connection_id_(0),
next_id_(1),
delegate_(delegate),
window_manager_delegate_(NULL) {
+ // TODO(beng): Come up with a better way of establishing a configuration for
+ // what the active window manager is.
+ std::string window_manager_url = "mojo:mojo_window_manager";
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch("window-manager")) {
+ window_manager_url =
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ "window-manager");
+ }
+ app_connection->ConnectToService(window_manager_url, &window_manager_);
+ window_manager_.set_client(this);
}
ViewManagerClientImpl::~ViewManagerClientImpl() {
@@ -208,8 +221,7 @@ void ViewManagerClientImpl::SetViewContents(Id view_id,
}
void ViewManagerClientImpl::SetFocus(Id view_id) {
- DCHECK(connected_);
- service_->SetFocus(view_id, ActionCompletedCallback());
+ window_manager_->FocusWindow(view_id, ActionCompletedCallback());
}
void ViewManagerClientImpl::SetVisible(Id view_id, bool visible) {
@@ -249,6 +261,7 @@ void ViewManagerClientImpl::RemoveView(Id view_id) {
void ViewManagerClientImpl::SetWindowManagerDelegate(
WindowManagerDelegate* window_manager_delegate) {
CHECK(NULL != GetViewById(1));
+ CHECK(!window_manager_delegate_);
window_manager_delegate_ = window_manager_delegate;
}
@@ -364,10 +377,29 @@ void ViewManagerClientImpl::OnViewInputEvent(
ack_callback.Run();
}
-void ViewManagerClientImpl::OnFocusChanged(Id gained_focus_id,
- Id lost_focus_id) {
- View* focused = GetViewById(gained_focus_id);
- View* blurred = GetViewById(lost_focus_id);
+void ViewManagerClientImpl::Embed(
+ const String& url,
+ InterfaceRequest<ServiceProvider> service_provider) {
+ window_manager_delegate_->Embed(url, service_provider.Pass());
+}
+
+void ViewManagerClientImpl::DispatchOnViewInputEvent(EventPtr event) {
+ if (window_manager_delegate_)
+ window_manager_delegate_->DispatchEvent(event.Pass());
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ViewManagerClientImpl, WindowManagerClient implementation:
+
+void ViewManagerClientImpl::OnWindowManagerReady() {}
+
+void ViewManagerClientImpl::OnCaptureChanged(Id old_capture_view_id,
+ Id new_capture_view_id) {}
+
+void ViewManagerClientImpl::OnFocusChanged(Id old_focused_view_id,
+ Id new_focused_view_id) {
+ View* focused = GetViewById(new_focused_view_id);
+ View* blurred = GetViewById(old_focused_view_id);
if (blurred) {
FOR_EACH_OBSERVER(ViewObserver,
*ViewPrivate(blurred).observers(),
@@ -380,17 +412,8 @@ void ViewManagerClientImpl::OnFocusChanged(Id gained_focus_id,
}
}
-void ViewManagerClientImpl::Embed(
- const String& url,
- InterfaceRequest<ServiceProvider> service_provider) {
- window_manager_delegate_->Embed(url, service_provider.Pass());
-}
-
-void ViewManagerClientImpl::DispatchOnViewInputEvent(Id view_id,
- EventPtr event) {
- if (window_manager_delegate_)
- window_manager_delegate_->DispatchEvent(GetViewById(view_id), event.Pass());
-}
+void ViewManagerClientImpl::OnActiveWindowChanged(Id old_focused_window,
+ Id new_focused_window) {}
////////////////////////////////////////////////////////////////////////////////
// ViewManagerClientImpl, private:

Powered by Google App Engine
This is Rietveld 408576698