diff options
author | jamescook <jamescook@chromium.org> | 2015-01-27 09:38:35 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-01-27 17:39:28 +0000 |
commit | 8d2f9f9704898dcf70a8f8763a6571c6dbcc5fa9 (patch) | |
tree | a728b797bedc4f9c38ebd7589164ac889faef855 /extensions/shell | |
parent | 05cea38cd18a82c5e4e7512561f88eb407a5a87e (diff) | |
download | chromium_src-8d2f9f9704898dcf70a8f8763a6571c6dbcc5fa9.zip chromium_src-8d2f9f9704898dcf70a8f8763a6571c6dbcc5fa9.tar.gz chromium_src-8d2f9f9704898dcf70a8f8763a6571c6dbcc5fa9.tar.bz2 |
chromeos: Add DBus binding for privetd Ping command
Extend PrivetDaemonClient to invoke the "Ping" D-Bus method
on org.chromium.privetd.Manager.
This is connected to the chrome.shell.gcd API for manual
testing, but that will be deleted soon in favor of talking to
privetd as part of Chrome OS OOBE. Manual tests require
adding user chronos to group privetd in /etc/groups until
https://code.google.com/p/brillo/issues/detail?id=3 lands.
BUG=428848
TEST=added chromeos_unittests PrivetDaemonClient.*
Review URL: https://codereview.chromium.org/869153005
Cr-Commit-Position: refs/heads/master@{#313298}
Diffstat (limited to 'extensions/shell')
4 files changed, 21 insertions, 51 deletions
diff --git a/extensions/shell/browser/api/shell_gcd/shell_gcd_api.cc b/extensions/shell/browser/api/shell_gcd/shell_gcd_api.cc index 2cbb133..637e8ce 100644 --- a/extensions/shell/browser/api/shell_gcd/shell_gcd_api.cc +++ b/extensions/shell/browser/api/shell_gcd/shell_gcd_api.cc @@ -13,23 +13,21 @@ namespace gcd = extensions::shell::api::shell_gcd; namespace extensions { -ShellGcdGetSetupStatusFunction::ShellGcdGetSetupStatusFunction() { +ShellGcdPingFunction::ShellGcdPingFunction() { } -ShellGcdGetSetupStatusFunction::~ShellGcdGetSetupStatusFunction() { +ShellGcdPingFunction::~ShellGcdPingFunction() { } -ExtensionFunction::ResponseAction ShellGcdGetSetupStatusFunction::Run() { +ExtensionFunction::ResponseAction ShellGcdPingFunction::Run() { // |this| is refcounted so we don't need the usual DBus callback WeakPtr. - chromeos::DBusThreadManager::Get()->GetPrivetDaemonClient()->GetSetupStatus( - base::Bind(&ShellGcdGetSetupStatusFunction::OnSetupStatus, this)); + chromeos::DBusThreadManager::Get()->GetPrivetDaemonClient()->Ping( + base::Bind(&ShellGcdPingFunction::OnPing, this)); return RespondLater(); } -void ShellGcdGetSetupStatusFunction::OnSetupStatus( - const std::string& status_string) { - gcd::SetupStatus status = gcd::ParseSetupStatus(status_string); - Respond(ArgumentList(gcd::GetSetupStatus::Results::Create(status))); +void ShellGcdPingFunction::OnPing(bool success) { + Respond(OneArgument(new base::FundamentalValue(success))); } } // namespace extensions diff --git a/extensions/shell/browser/api/shell_gcd/shell_gcd_api.h b/extensions/shell/browser/api/shell_gcd/shell_gcd_api.h index defcd9b..986f32f 100644 --- a/extensions/shell/browser/api/shell_gcd/shell_gcd_api.h +++ b/extensions/shell/browser/api/shell_gcd/shell_gcd_api.h @@ -11,23 +11,23 @@ namespace extensions { // See shell_gcd.idl for documentation. -class ShellGcdGetSetupStatusFunction : public UIThreadExtensionFunction { +class ShellGcdPingFunction : public UIThreadExtensionFunction { public: - DECLARE_EXTENSION_FUNCTION("shell.gcd.getSetupStatus", UNKNOWN); + DECLARE_EXTENSION_FUNCTION("shell.gcd.ping", UNKNOWN); - ShellGcdGetSetupStatusFunction(); + ShellGcdPingFunction(); protected: - ~ShellGcdGetSetupStatusFunction() override; + ~ShellGcdPingFunction() override; // ExtensionFunction: ResponseAction Run() override; private: // Callback for status from DBus call to GCD privet daemon. - void OnSetupStatus(const std::string& status_string); + void OnPing(bool success); - DISALLOW_COPY_AND_ASSIGN(ShellGcdGetSetupStatusFunction); + DISALLOW_COPY_AND_ASSIGN(ShellGcdPingFunction); }; } // namespace extensions diff --git a/extensions/shell/browser/api/shell_gcd/shell_gcd_api_unittest.cc b/extensions/shell/browser/api/shell_gcd/shell_gcd_api_unittest.cc index a22c9f2..046fc7a 100644 --- a/extensions/shell/browser/api/shell_gcd/shell_gcd_api_unittest.cc +++ b/extensions/shell/browser/api/shell_gcd/shell_gcd_api_unittest.cc @@ -30,18 +30,17 @@ class ShellGcdApiTest : public ApiUnitTest { } private: - DISALLOW_COPY_AND_ASSIGN(ShellGcdApiTest); }; TEST_F(ShellGcdApiTest, GetBootstrapStatus) { // Function succeeds and returns a result (for its callback). scoped_ptr<base::Value> result = - RunFunctionAndReturnValue(new ShellGcdGetSetupStatusFunction, "[{}]"); + RunFunctionAndReturnValue(new ShellGcdPingFunction, "[{}]"); ASSERT_TRUE(result.get()); - std::string value; - result->GetAsString(&value); - EXPECT_EQ("completed", value); + bool success = false; + result->GetAsBoolean(&success); + EXPECT_TRUE(success); } } // namespace extensions diff --git a/extensions/shell/common/api/shell_gcd.idl b/extensions/shell/common/api/shell_gcd.idl index c55aad6..7f2175a 100644 --- a/extensions/shell/common/api/shell_gcd.idl +++ b/extensions/shell/common/api/shell_gcd.idl @@ -6,38 +6,11 @@ // running on Chrome OS Core. The actual bootstrapping and GCD registration is // handled by the privetd and buffet system daemons. namespace shell.gcd { - - enum SetupStatus { - // Not yet configured. Waiting for a connection from the phone or laptop - // setup app. - unconfigured, - - // Displaying code for user to verify they wish to set up this device. - confirmingSetup, - - // Establishing a secure connection to the setup device and exchanging the - // Wi-Fi credentials. - exchangingCredentials, - - // Connecting to the local network. - connectingToNetwork, - - // Registering with the GCD backend. - registering, - - // Setup completed. - completed - }; - - callback SetupStatusCallback = void(SetupStatus status); + + callback PingCallback = void(boolean success); interface Functions { - // Returns the current setup status via |callback|. - static void getSetupStatus(SetupStatusCallback callback); - }; - - interface Events { - // Notifies that setup has transitioned to a new |status|. - static void onSetupStatusChanged(SetupStatus status); + // Attempts to ping the daemon via D-Bus. + static void ping(PingCallback callback); }; }; |