blob: aca5ebffbd67e2c5ea63676df330b6339967ad7b [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DEBUGD_SRC_SESSION_MANAGER_PROXY_H_
#define DEBUGD_SRC_SESSION_MANAGER_PROXY_H_
#include <string>
#include <base/macros.h>
#include <chromeos/dbus/service_constants.h>
#include <dbus-c++/dbus.h>
#include <session_manager/dbus_proxies/org.chromium.SessionManagerInterface.h>
namespace debugd {
// Talks to Session Manager DBus interface. It also exposes
// convenience method to enable Chrome remote debugging and listens to Session
// Manager signal to ensure Chrome remote debugging is on when it is supposed
// to be.
class SessionManagerProxy : public org::chromium::SessionManagerInterface_proxy,
public DBus::ObjectProxy {
public:
explicit SessionManagerProxy(DBus::Connection* connection)
: DBus::ObjectProxy(*connection,
login_manager::kSessionManagerServicePath,
login_manager::kSessionManagerServiceName) {}
~SessionManagerProxy() override = default;
void LoginPromptVisible() override;
// Ignored signals.
void SessionStateChanged(const std::string& /* state */) override {}
void SetOwnerKeyComplete(const std::string& /* success */) override {}
void PropertyChangeComplete(const std::string& /* success */) override {}
void ScreenIsLocked() override {}
void ScreenIsUnlocked() override {}
// Sets up the proxy for Chrome remote debugging and tries to enable it.
void EnableChromeRemoteDebugging();
private:
// Tries to enable Chrome remote debugging.
void EnableChromeRemoteDebuggingInternal();
// Should the proxy try to enable Chrome remote debugging.
bool should_enable_chrome_remote_debugging_ = false;
// Whether Chrome remote debugging is already successfully enabled.
bool is_chrome_remote_debugging_enabled_ = false;
DISALLOW_COPY_AND_ASSIGN(SessionManagerProxy);
};
} // namespace debugd
#endif // DEBUGD_SRC_SESSION_MANAGER_PROXY_H_