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

Unified Diff: trunk/src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc

Issue 22326003: Revert 215769 "linux_aura: Implement the static part of the dbus..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 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: trunk/src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc
===================================================================
--- trunk/src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc (revision 215779)
+++ trunk/src/chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.cc (working copy)
@@ -1,139 +0,0 @@
-// Copyright 2013 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 "chrome/browser/ui/views/frame/global_menu_bar_registrar_x11.h"
-
-#include "base/bind.h"
-#include "base/logging.h"
-#include "chrome/browser/ui/views/frame/global_menu_bar_x11.h"
-#include "content/public/browser/browser_thread.h"
-
-using content::BrowserThread;
-
-namespace {
-
-const char kAppMenuRegistrarName[] = "com.canonical.AppMenu.Registrar";
-const char kAppMenuRegistrarPath[] = "/com/canonical/AppMenu/Registrar";
-
-} // namespace
-
-// static
-GlobalMenuBarRegistrarX11* GlobalMenuBarRegistrarX11::GetInstance() {
- return Singleton<GlobalMenuBarRegistrarX11>::get();
-}
-
-void GlobalMenuBarRegistrarX11::OnWindowMapped(unsigned long xid) {
- live_xids_.insert(xid);
-
- if (registrar_proxy_)
- RegisterXID(xid);
-}
-
-void GlobalMenuBarRegistrarX11::OnWindowUnmapped(unsigned long xid) {
- if (registrar_proxy_)
- UnregisterXID(xid);
-
- live_xids_.erase(xid);
-}
-
-GlobalMenuBarRegistrarX11::GlobalMenuBarRegistrarX11()
- : registrar_proxy_(NULL) {
- // libdbusmenu uses the gio version of dbus; I tried using the code in dbus/,
- // but it looks like that's isn't sharing the bus name with the gio version,
- // even when |connection_type| is set to SHARED.
- g_dbus_proxy_new_for_bus(
- G_BUS_TYPE_SESSION,
- static_cast<GDBusProxyFlags>(
- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES |
- G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS |
- G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START),
- NULL,
- kAppMenuRegistrarName,
- kAppMenuRegistrarPath,
- kAppMenuRegistrarName,
- NULL, // TODO: Probalby want a real cancelable.
- static_cast<GAsyncReadyCallback>(OnProxyCreatedThunk),
- this);
-}
-
-GlobalMenuBarRegistrarX11::~GlobalMenuBarRegistrarX11() {
- if (registrar_proxy_) {
- g_signal_handlers_disconnect_by_func(
- registrar_proxy_,
- reinterpret_cast<void*>(OnNameOwnerChangedThunk),
- this);
- g_object_unref(registrar_proxy_);
- }
-}
-
-void GlobalMenuBarRegistrarX11::RegisterXID(unsigned long xid) {
- DCHECK(registrar_proxy_);
- std::string path = GlobalMenuBarX11::GetPathForWindow(xid);
-
- // TODO(erg): The mozilla implementation goes to a lot of callback trouble
- // just to make sure that they react to make sure there's some sort of
- // cancelable object; including making a whole callback just to handle the
- // cancelable.
- //
- // I don't see any reason why we should care if "RegisterWindow" completes or
- // not.
- g_dbus_proxy_call(registrar_proxy_,
- "RegisterWindow",
- g_variant_new("(uo)", xid, path.c_str()),
- G_DBUS_CALL_FLAGS_NONE, -1,
- NULL,
- NULL,
- NULL);
-}
-
-void GlobalMenuBarRegistrarX11::UnregisterXID(unsigned long xid) {
- DCHECK(registrar_proxy_);
- std::string path = GlobalMenuBarX11::GetPathForWindow(xid);
-
- // TODO(erg): The mozilla implementation goes to a lot of callback trouble
- // just to make sure that they react to make sure there's some sort of
- // cancelable object; including making a whole callback just to handle the
- // cancelable.
- //
- // I don't see any reason why we should care if "UnregisterWindow" completes
- // or not.
- g_dbus_proxy_call(registrar_proxy_,
- "UnregisterWindow",
- g_variant_new("(u)", xid),
- G_DBUS_CALL_FLAGS_NONE, -1,
- NULL,
- NULL,
- NULL);
-}
-
-void GlobalMenuBarRegistrarX11::OnProxyCreated(GObject* source,
- GAsyncResult* result) {
- GError* error = NULL;
- GDBusProxy* proxy = g_dbus_proxy_new_for_bus_finish(result, &error);
- if (error) {
- g_error_free(error);
- return;
- }
-
- // TODO(erg): Mozilla's implementation has a workaround for GDBus
- // cancellation here. However, it's marked as fixed. If there's weird
- // problems with cancelation, look at how they fixed their issues.
-
- registrar_proxy_ = proxy;
-
- g_signal_connect(registrar_proxy_, "notify::g-name-owner",
- G_CALLBACK(OnNameOwnerChangedThunk), this);
-
- OnNameOwnerChanged(NULL, NULL);
-}
-
-void GlobalMenuBarRegistrarX11::OnNameOwnerChanged(GObject* /* ignored */,
- GParamSpec* /* ignored */) {
- // If the name owner changed, we need to reregister all the live xids with
- // the system.
- for (std::set<unsigned long>::const_iterator it = live_xids_.begin();
- it != live_xids_.end(); ++it) {
- RegisterXID(*it);
- }
-}

Powered by Google App Engine
This is Rietveld 408576698