blob: f71f35863edbd62e694ad9e8546c0100a1631157 [file] [edit]
// Copyright (c) 2012 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 LOGIN_MANAGER_DBUS_GLIB_SHIM_H_
#define LOGIN_MANAGER_DBUS_GLIB_SHIM_H_
#include <dbus/dbus-glib-bindings.h>
#include <dbus/dbus-glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <base/logging.h>
#include <chromeos/dbus/dbus.h>
#include <chromeos/glib/object.h>
// Helpers for using GObjects until we can get a C++ wrapper going.
namespace login_manager {
class SessionManagerInterface;
namespace gobject { // Namespace hiding the GObject type data.
struct SessionManager {
GObject parent_instance;
SessionManagerInterface *impl; // pointer to SessionManager API implemention.
};
struct SessionManagerClass { GObjectClass parent_class; };
// session_manager_get_type() is defined in dbus_glib_shim.cc by the
// G_DEFINE_TYPE() macro. This macro defines a number of other GLib
// class system specific functions and variables discussed in
// dbus_glib_shim.cc.
GType session_manager_get_type(); // defined by G_DEFINE_TYPE
struct dbus_glib_session_manager_object_info; // defined by G_DEFINE_TYPE
// Interface function prototypes which wrap impl.
gboolean session_manager_emit_login_prompt_ready(SessionManager *self,
gboolean *OUT_emitted,
GError **error);
gboolean session_manager_emit_login_prompt_visible(SessionManager* self,
GError** error);
gboolean session_manager_enable_chrome_testing(SessionManager* self,
gboolean force_relaunch,
const gchar** extra_arguments,
gchar** OUT_filepath,
GError** error);
gboolean session_manager_start_session(SessionManager *self,
gchar *email_address,
gchar *unique_identifier,
gboolean *OUT_done,
GError **error);
gboolean session_manager_stop_session(SessionManager *self,
gchar *unique_identifier,
gboolean *OUT_done,
GError **error);
gboolean session_manager_store_policy(SessionManager *self,
GArray *policy_blob,
DBusGMethodInvocation* context);
gboolean session_manager_retrieve_policy(SessionManager *self,
GArray **OUT_policy_blob,
GError **error);
gboolean session_manager_store_policy_for_user(SessionManager *self,
gchar* user_email,
GArray *policy_blob,
DBusGMethodInvocation* context);
gboolean session_manager_retrieve_policy_for_user(SessionManager *self,
gchar* user_email,
GArray **OUT_policy_blob,
GError **error);
gboolean session_manager_store_device_local_account_policy(
SessionManager *self,
gchar* account_id,
GArray *policy_blob,
DBusGMethodInvocation* context);
gboolean session_manager_retrieve_device_local_account_policy(
SessionManager *self,
gchar* account_id,
GArray **OUT_policy_blob,
GError **error);
gboolean session_manager_retrieve_session_state(SessionManager *self,
gchar** OUT_state);
GHashTable* session_manager_retrieve_active_sessions(SessionManager *self);
gboolean session_manager_handle_lock_screen_dismissed(SessionManager *self,
GError **error);
gboolean session_manager_lock_screen(SessionManager *self,
GError **error);
gboolean session_manager_handle_lock_screen_shown(SessionManager *self,
GError **error);
gboolean session_manager_restart_job(SessionManager *self,
gint pid,
gchar *arguments,
gboolean *OUT_done,
GError **error);
gboolean session_manager_restart_job_with_auth(SessionManager *self,
gint pid,
gchar *cookie,
gchar *arguments,
gboolean *OUT_done,
GError **error);
gboolean session_manager_start_device_wipe(SessionManager *self,
gboolean *OUT_done,
GError **error);
gboolean session_manager_set_flags_for_user(SessionManager *self,
gchar* user_email,
const gchar** flags,
GError **error);
} // namespace gobject
} // namespace login_manager
#endif // LOGIN_MANAGER_DBUS_GLIB_SHIM_H_