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

Unified Diff: chromeos/dbus/session_manager_client.cc

Issue 2397863003: Move free disk space check to session_manager. (Closed)
Patch Set: Address comments Created 4 years, 2 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
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | components/arc/arc_bridge_bootstrap.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/dbus/session_manager_client.cc
diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc
index df81dccde03e54b2e9cdfc07a55ee106b4d14cdf..234f1e909ade1347d13861cdfdcfd8576f4ba969 100644
--- a/chromeos/dbus/session_manager_client.cc
+++ b/chromeos/dbus/session_manager_client.cc
@@ -36,6 +36,10 @@ namespace chromeos {
namespace {
+// TODO(hidehiko): Share the constant between Chrome and ChromeOS.
+constexpr char kArcLowDiskError[] =
+ "org.chromium.SessionManagerInterface.LowFreeDisk";
+
// Returns a location for |file| that is specific to the given |cryptohome_id|.
// These paths will be relative to DIR_USER_POLICY_KEYS, and can be used only
// to store stub files.
@@ -310,18 +314,19 @@ class SessionManagerClientImpl : public SessionManagerClient {
void StartArcInstance(const cryptohome::Identification& cryptohome_id,
bool disable_boot_completed_broadcast,
- const ArcCallback& callback) override {
+ const StartArcInstanceCallback& callback) override {
dbus::MethodCall method_call(
login_manager::kSessionManagerInterface,
login_manager::kSessionManagerStartArcInstance);
dbus::MessageWriter writer(&method_call);
writer.AppendString(cryptohome_id.id());
writer.AppendBool(disable_boot_completed_broadcast);
- session_manager_proxy_->CallMethod(
+ session_manager_proxy_->CallMethodWithErrorCallback(
&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
- base::Bind(&SessionManagerClientImpl::OnArcMethod,
- weak_ptr_factory_.GetWeakPtr(),
- login_manager::kSessionManagerStartArcInstance, callback));
+ base::Bind(&SessionManagerClientImpl::OnStartArcInstanceSucceeded,
+ weak_ptr_factory_.GetWeakPtr(), callback),
+ base::Bind(&SessionManagerClientImpl::OnStartArcInstanceFailed,
+ weak_ptr_factory_.GetWeakPtr(), callback));
}
void StopArcInstance(const ArcCallback& callback) override {
@@ -722,6 +727,22 @@ class SessionManagerClientImpl : public SessionManagerClient {
callback.Run(success);
}
+ void OnStartArcInstanceSucceeded(const StartArcInstanceCallback& callback,
+ dbus::Response* response) {
+ if (!callback.is_null())
+ callback.Run(StartArcInstanceResult::SUCCESS);
+ }
+
+ void OnStartArcInstanceFailed(const StartArcInstanceCallback& callback,
+ dbus::ErrorResponse* response) {
+ LOG(ERROR) << "Failed to call StartArcInstance: "
+ << (response ? response->ToString() : "(null)");
+ if (!callback.is_null())
+ callback.Run(response && response->GetErrorName() == kArcLowDiskError
+ ? StartArcInstanceResult::LOW_FREE_DISK_SPACE
+ : StartArcInstanceResult::UNKNOWN_ERROR);
+ }
+
dbus::ObjectProxy* session_manager_proxy_;
std::unique_ptr<BlockingMethodCaller> blocking_method_caller_;
base::ObserverList<Observer> observers_;
@@ -898,8 +919,8 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
void StartArcInstance(const cryptohome::Identification& cryptohome_id,
bool disable_boot_completed_broadcast,
- const ArcCallback& callback) override {
- callback.Run(false);
+ const StartArcInstanceCallback& callback) override {
+ callback.Run(StartArcInstanceResult::UNKNOWN_ERROR);
}
void PrioritizeArcInstance(const ArcCallback& callback) override {
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | components/arc/arc_bridge_bootstrap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698