buffet: libchromeos: Move ExportedObjectManager to libchromeos
We'd like to reuse this code in peerd.
BUG=chromium:398626
TEST=buffet/libchromeos unittests
Change-Id: I37be87dacbd5507d0f405b832cb45f65b4d70203
Reviewed-on: https://chromium-review.googlesource.com/211962
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Christopher Wiley <wiley@chromium.org>
Tested-by: Christopher Wiley <wiley@chromium.org>
diff --git a/buffet/buffet.gyp b/buffet/buffet.gyp
index 03b3c81..925afd9 100644
--- a/buffet/buffet.gyp
+++ b/buffet/buffet.gyp
@@ -4,17 +4,11 @@
'deps': [
'dbus-1',
'libchrome-<(libbase_ver)',
- 'libchrome-test-<(libbase_ver)',
'libchromeos-<(libbase_ver)',
'libcurl',
'libmetrics-<(libbase_ver)',
],
},
- 'link_settings': {
- 'libraries': [
- '-lbase-dbus_test_support-<(libbase_ver)',
- ],
- },
},
'targets': [
{
@@ -39,7 +33,6 @@
'device_registration_info.cc',
'error.cc',
'error_codes.cc',
- 'exported_object_manager.cc',
'http_request.cc',
'http_connection_curl.cc',
'http_transport_curl.cc',
@@ -98,7 +91,6 @@
'data_encoding_unittest.cc',
'device_registration_info_unittest.cc',
'error_unittest.cc',
- 'exported_object_manager_unittest.cc',
'http_connection_fake.cc',
'http_transport_fake.cc',
'http_utils_unittest.cc',
diff --git a/buffet/exported_object_manager.cc b/buffet/exported_object_manager.cc
deleted file mode 100644
index d76e067..0000000
--- a/buffet/exported_object_manager.cc
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2014 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.
-
-#include "buffet/exported_object_manager.h"
-
-#include <chromeos/async_event_sequencer.h>
-#include <dbus/object_manager.h>
-
-
-using chromeos::dbus_utils::AsyncEventSequencer;
-
-namespace buffet {
-
-namespace dbus_utils {
-
-ExportedObjectManager::ExportedObjectManager(scoped_refptr<dbus::Bus> bus,
- const dbus::ObjectPath& path)
- : bus_(bus), exported_object_(bus->GetExportedObject(path)) {}
-
-void ExportedObjectManager::Init(const OnInitFinish& cb) {
- bus_->AssertOnOriginThread();
- scoped_refptr<AsyncEventSequencer> sequencer(new AsyncEventSequencer());
- exported_object_->ExportMethod(
- dbus::kObjectManagerInterface,
- dbus::kObjectManagerGetManagedObjects,
- base::Bind(&ExportedObjectManager::HandleGetManagedObjects,
- AsWeakPtr()),
- sequencer->GetExportHandler(
- dbus::kObjectManagerInterface,
- dbus::kObjectManagerGetManagedObjects,
- "Failed exporting GetManagedObjects method of ObjectManager",
- false));
- sequencer->OnAllTasksCompletedCall({cb});
-}
-
-void ExportedObjectManager::ClaimInterface(
- const dbus::ObjectPath& path,
- const std::string& interface_name,
- const PropertyWriter& property_writer) {
- bus_->AssertOnOriginThread();
- // We're sending signals that look like:
- // org.freedesktop.DBus.ObjectManager.InterfacesAdded (
- // OBJPATH object_path,
- // DICT<STRING,DICT<STRING,VARIANT>> interfaces_and_properties);
- dbus::Signal signal(dbus::kObjectManagerInterface,
- dbus::kObjectManagerInterfacesAdded);
- dbus::MessageWriter signal_writer(&signal);
- dbus::MessageWriter all_interfaces(&signal);
- dbus::MessageWriter each_interface(&signal);
- signal_writer.AppendObjectPath(path);
- signal_writer.OpenArray("{sa{sv}}", &all_interfaces);
- all_interfaces.OpenDictEntry(&each_interface);
- each_interface.AppendString(interface_name);
- property_writer.Run(&each_interface);
- all_interfaces.CloseContainer(&each_interface);
- signal_writer.CloseContainer(&all_interfaces);
- exported_object_->SendSignal(&signal);
- registered_objects_[path][interface_name] = property_writer;
-}
-
-void ExportedObjectManager::ReleaseInterface(
- const dbus::ObjectPath& path, const std::string& interface_name) {
- bus_->AssertOnOriginThread();
- auto interfaces_for_path_itr = registered_objects_.find(path);
- CHECK(interfaces_for_path_itr != registered_objects_.end())
- << "Attempting to signal interface removal for path " << path.value()
- << " which was never registered.";
- auto interfaces_for_path = interfaces_for_path_itr->second;
- auto property_for_interface_itr = interfaces_for_path.find(interface_name);
- CHECK(property_for_interface_itr != interfaces_for_path.end())
- << "Attempted to remove interface " << interface_name << " from "
- << path.value() << ", but this interface was never registered.";
- interfaces_for_path.erase(interface_name);
- if (interfaces_for_path.size() < 1) {
- registered_objects_.erase(path);
- }
- // We're sending signals that look like:
- // org.freedesktop.DBus.ObjectManager.InterfacesRemoved (
- // OBJPATH object_path, ARRAY<STRING> interfaces);
- dbus::Signal signal(dbus::kObjectManagerInterface,
- dbus::kObjectManagerInterfacesRemoved);
- dbus::MessageWriter signal_writer(&signal);
- signal_writer.AppendObjectPath(path);
- dbus::MessageWriter interface_writer(nullptr);
- signal_writer.OpenArray("s", &interface_writer);
- interface_writer.AppendString(interface_name);
- signal_writer.CloseContainer(&interface_writer);
- exported_object_->SendSignal(&signal);
-}
-
-void ExportedObjectManager::HandleGetManagedObjects(
- dbus::MethodCall* method_call,
- dbus::ExportedObject::ResponseSender response_sender) const {
- // Implements the GetManagedObjects method:
- //
- // org.freedesktop.DBus.ObjectManager.GetManagedObjects (
- // out DICT<OBJPATH,
- // DICT<STRING,
- // DICT<STRING,VARIANT>>> )
- bus_->AssertOnOriginThread();
- scoped_ptr<dbus::Response> response(
- dbus::Response::FromMethodCall(method_call));
- dbus::MessageWriter response_writer(response.get());
- dbus::MessageWriter all_object_paths(nullptr);
- dbus::MessageWriter each_object_path(nullptr);
- dbus::MessageWriter all_interfaces(nullptr);
- dbus::MessageWriter each_interface(nullptr);
-
- response_writer.OpenArray("{oa{sa{sv}}}", &all_object_paths);
- for (const auto path_pair : registered_objects_) {
- const dbus::ObjectPath& path = path_pair.first;
- const InterfaceProperties& interface2properties = path_pair.second;
- all_object_paths.OpenDictEntry(&each_object_path);
- each_object_path.AppendObjectPath(path);
- each_object_path.OpenArray("{sa{sv}}", &all_interfaces);
- for (const auto interface : interface2properties) {
- const std::string& interface_name = interface.first;
- const PropertyWriter& property_writer = interface.second;
- all_interfaces.OpenDictEntry(&each_interface);
- each_interface.AppendString(interface_name);
- property_writer.Run(&each_interface);
- all_interfaces.CloseContainer(&each_interface);
- }
- each_object_path.CloseContainer(&all_interfaces);
- all_object_paths.CloseContainer(&each_object_path);
- }
- response_writer.CloseContainer(&all_object_paths);
- response_sender.Run(response.Pass());
-}
-
-} // namespace dbus_utils
-
-} // namespace buffet
diff --git a/buffet/exported_object_manager.h b/buffet/exported_object_manager.h
deleted file mode 100644
index 978c84e..0000000
--- a/buffet/exported_object_manager.h
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2014 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 BUFFET_EXPORTED_OBJECT_MANAGER_H_
-#define BUFFET_EXPORTED_OBJECT_MANAGER_H_
-
-#include <map>
-#include <string>
-
-#include <base/memory/weak_ptr.h>
-#include <dbus/bus.h>
-#include <dbus/exported_object.h>
-#include <dbus/message.h>
-#include <dbus/object_path.h>
-
-namespace buffet {
-
-namespace dbus_utils {
-
-// ExportedObjectManager is a delegate that implements the
-// org.freedesktop.DBus.ObjectManager interface on behalf of another
-// object. It handles sending signals when new interfaces are added.
-//
-// This class is very similar to the ExportedPropertySet class, except that
-// it allows objects to expose an object manager interface rather than the
-// properties interface.
-//
-// Example usage:
-//
-// class ExampleObjectManager {
-// public:
-// ExampleObjectManager(dbus::Bus* bus)
-// : object_manager_(bus, "/my/objects/path") { }
-//
-// void Init(const OnInitFinish& cb) { object_manager_.Init(cb); }
-// void ClaimInterface(const dbus::ObjectPath& path,
-// const std::string& interface_name,
-// const PropertyWriter& writer) {
-// object_manager_->ClaimInterface(...);
-// }
-// void ReleaseInterface(const dbus::ObjectPath& path,
-// const std::string& interface_name) {
-// object_manager_->ReleaseInterface(...);
-// }
-//
-// private:
-// ExportedObjectManager object_manager_;
-// };
-//
-// class MyObjectClaimingAnInterface {
-// public:
-// MyObjectClaimingAnInterface(ExampleObjectManager* object_manager)
-// : object_manager_(object_manager) {}
-//
-// void OnInitFinish(bool success) {
-// if (!success) { /* handle that */ }
-// object_manager_->ClaimInterface(
-// my_path_, my_interface_, my_properties_.GetWriter());
-// }
-//
-// private:
-// struct Properties : public ExportedPropertySet {
-// public:
-// /* Lots of interesting properties. */
-// };
-//
-// Properties my_properties_;
-// ExampleObjectManager* object_manager_;
-// };
-class ExportedObjectManager
- : public base::SupportsWeakPtr<ExportedObjectManager> {
- public:
- // Writes a dictionary of property name to property value variants to writer.
- typedef base::Callback<void(dbus::MessageWriter* writer)> PropertyWriter;
- typedef base::Callback<void(bool success)> OnInitFinish;
- typedef std::map<std::string, PropertyWriter> InterfaceProperties;
-
- ExportedObjectManager(scoped_refptr<dbus::Bus> bus,
- const dbus::ObjectPath& path);
-
- // Registers methods implementing the ObjectManager interface on the object
- // exported on the path given in the constructor. Must be called on the
- // origin thread.
- void Init(const OnInitFinish& cb);
-
- // Trigger a signal that |path| has added an interface |interface_name|
- // with properties as given by |writer|.
- void ClaimInterface(const dbus::ObjectPath& path,
- const std::string& interface_name,
- const PropertyWriter& writer);
-
- // Trigger a signal that |path| has removed an interface |interface_name|.
- void ReleaseInterface(const dbus::ObjectPath& path,
- const std::string& interface_name);
-
- const scoped_refptr<dbus::Bus>& GetBus() const { return bus_; }
-
- private:
- void HandleGetManagedObjects(
- dbus::MethodCall* method_call,
- dbus::ExportedObject::ResponseSender response_sender) const;
-
- scoped_refptr<dbus::Bus> bus_;
- // |exported_object_| outlives *this.
- dbus::ExportedObject* const exported_object_;
- // Tracks all objects currently known to the ExportedObjectManager.
- std::map<dbus::ObjectPath, InterfaceProperties> registered_objects_;
-
- friend class ExportedObjectManagerTest;
- DISALLOW_COPY_AND_ASSIGN(ExportedObjectManager);
-};
-
-} // namespace dbus_utils
-
-} // namespace buffet
-
-#endif // BUFFET_EXPORTED_OBJECT_MANAGER_H_
diff --git a/buffet/exported_object_manager_unittest.cc b/buffet/exported_object_manager_unittest.cc
deleted file mode 100644
index 696b76f..0000000
--- a/buffet/exported_object_manager_unittest.cc
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2014 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.
-
-#include "buffet/exported_object_manager.h"
-
-#include <base/bind.h>
-#include <dbus/mock_bus.h>
-#include <dbus/mock_exported_object.h>
-#include <dbus/object_manager.h>
-#include <dbus/object_path.h>
-#include <gtest/gtest.h>
-
-using ::testing::AnyNumber;
-using ::testing::InSequence;
-using ::testing::Invoke;
-using ::testing::Return;
-using ::testing::_;
-
-namespace buffet {
-
-namespace dbus_utils {
-
-namespace {
-
-const dbus::ObjectPath kTestPath(std::string("/test/om_path"));
-const dbus::ObjectPath kClaimedTestPath(std::string("/test/claimed_path"));
-const std::string kClaimedInterface("claimed.interface");
-const std::string kTestPropertyName("PropertyName");
-const std::string kTestPropertyValue("PropertyValue");
-
-void WriteTestPropertyDict(dbus::MessageWriter* writer) {
- dbus::MessageWriter all_properties(nullptr);
- dbus::MessageWriter each_property(nullptr);
- writer->OpenArray("{sv}", &all_properties);
- all_properties.OpenDictEntry(&each_property);
- each_property.AppendString(kTestPropertyName);
- each_property.AppendVariantOfString(kTestPropertyValue);
- all_properties.CloseContainer(&each_property);
- writer->CloseContainer(&all_properties);
-}
-
-void ReadTestPropertyDict(dbus::MessageReader* reader) {
- dbus::MessageReader all_properties(nullptr);
- dbus::MessageReader each_property(nullptr);
- ASSERT_TRUE(reader->PopArray(&all_properties));
- ASSERT_TRUE(all_properties.PopDictEntry(&each_property));
- std::string property_name;
- std::string property_value;
- ASSERT_TRUE(each_property.PopString(&property_name));
- ASSERT_TRUE(each_property.PopVariantOfString(&property_value));
- EXPECT_FALSE(each_property.HasMoreData());
- EXPECT_FALSE(all_properties.HasMoreData());
- EXPECT_EQ(property_name, kTestPropertyName);
- EXPECT_EQ(property_value, kTestPropertyValue);
-}
-
-void VerifyInterfaceClaimSignal(dbus::Signal* signal) {
- EXPECT_EQ(signal->GetInterface(),
- std::string(dbus::kObjectManagerInterface));
- EXPECT_EQ(signal->GetMember(),
- std::string(dbus::kObjectManagerInterfacesAdded));
- // org.freedesktop.DBus.ObjectManager.InterfacesAdded (
- // OBJPATH object_path,
- // DICT<STRING,DICT<STRING,VARIANT>> interfaces_and_properties);
- dbus::MessageReader reader(signal);
- dbus::MessageReader all_interfaces(nullptr);
- dbus::MessageReader each_interface(nullptr);
- dbus::ObjectPath path;
- ASSERT_TRUE(reader.PopObjectPath(&path));
- ASSERT_TRUE(reader.PopArray(&all_interfaces));
- ASSERT_TRUE(all_interfaces.PopDictEntry(&each_interface));
- std::string interface_name;
- ASSERT_TRUE(each_interface.PopString(&interface_name));
- ReadTestPropertyDict(&each_interface);
- EXPECT_FALSE(each_interface.HasMoreData());
- EXPECT_FALSE(all_interfaces.HasMoreData());
- EXPECT_FALSE(reader.HasMoreData());
- EXPECT_EQ(interface_name, kClaimedInterface);
- EXPECT_EQ(path, kClaimedTestPath);
-}
-
-void VerifyInterfaceDropSignal(dbus::Signal* signal) {
- EXPECT_EQ(signal->GetInterface(),
- std::string(dbus::kObjectManagerInterface));
- EXPECT_EQ(signal->GetMember(),
- std::string(dbus::kObjectManagerInterfacesRemoved));
- // org.freedesktop.DBus.ObjectManager.InterfacesRemoved (
- // OBJPATH object_path, ARRAY<STRING> interfaces);
- dbus::MessageReader reader(signal);
- dbus::MessageReader each_interface(nullptr);
- dbus::ObjectPath path;
- ASSERT_TRUE(reader.PopObjectPath(&path));
- ASSERT_TRUE(reader.PopArray(&each_interface));
- std::string interface_name;
- ASSERT_TRUE(each_interface.PopString(&interface_name));
- EXPECT_FALSE(each_interface.HasMoreData());
- EXPECT_FALSE(reader.HasMoreData());
- EXPECT_EQ(interface_name, kClaimedInterface);
- EXPECT_EQ(path, kClaimedTestPath);
-}
-
-} // namespace
-
-class ExportedObjectManagerTest: public ::testing::Test {
- public:
- virtual void SetUp() {
- dbus::Bus::Options options;
- options.bus_type = dbus::Bus::SYSTEM;
- bus_ = new dbus::MockBus(options);
- // By default, don't worry about threading assertions.
- EXPECT_CALL(*bus_, AssertOnOriginThread()).Times(AnyNumber());
- EXPECT_CALL(*bus_, AssertOnDBusThread()).Times(AnyNumber());
- // Use a mock exported object.
- mock_exported_object_ = new dbus::MockExportedObject(
- bus_.get(), kTestPath);
- EXPECT_CALL(*bus_, GetExportedObject(kTestPath))
- .Times(1).WillOnce(Return(mock_exported_object_.get()));
- om_.reset(new ExportedObjectManager(bus_.get(), kTestPath));
- property_writer_ = base::Bind(&WriteTestPropertyDict);
- response_storer_ = base::Bind(&ExportedObjectManagerTest::StoreResponse,
- base::Unretained(this));
- }
-
- void StoreResponse(scoped_ptr<dbus::Response> method_response) {
- last_response_.reset(method_response.release());
- }
-
- void CallHandleGetManagedObjects(
- dbus::MethodCall* method_call,
- dbus::ExportedObject::ResponseSender sender) {
- om_->HandleGetManagedObjects(method_call, response_storer_);
- }
-
- scoped_refptr<dbus::MockBus> bus_;
- scoped_refptr<dbus::MockExportedObject> mock_exported_object_;
- scoped_ptr<ExportedObjectManager> om_;
- ExportedObjectManager::PropertyWriter property_writer_;
- dbus::ExportedObject::ResponseSender response_storer_;
- scoped_ptr<dbus::Response> last_response_;
-};
-
-TEST_F(ExportedObjectManagerTest, ClaimInterfaceSendsSignals) {
- EXPECT_CALL(*mock_exported_object_, SendSignal(_))
- .Times(1).WillOnce(Invoke(&VerifyInterfaceClaimSignal));
- om_->ClaimInterface(kClaimedTestPath, kClaimedInterface, property_writer_);
-}
-
-TEST_F(ExportedObjectManagerTest, ReleaseInterfaceSendsSignals) {
- InSequence dummy;
- EXPECT_CALL(*mock_exported_object_, SendSignal(_)).Times(1);
- EXPECT_CALL(*mock_exported_object_, SendSignal(_))
- .Times(1).WillOnce(Invoke(&VerifyInterfaceDropSignal));
- om_->ClaimInterface(kClaimedTestPath, kClaimedInterface, property_writer_);
- om_->ReleaseInterface(kClaimedTestPath, kClaimedInterface);
-}
-
-TEST_F(ExportedObjectManagerTest, GetManagedObjectsResponseEmptyCorrectness) {
- dbus::MethodCall method_call(dbus::kObjectManagerInterface,
- dbus::kObjectManagerGetManagedObjects);
- method_call.SetSerial(123);
- CallHandleGetManagedObjects(&method_call, response_storer_);
- dbus::MessageReader reader(last_response_.get());
- dbus::MessageReader all_paths(nullptr);
- ASSERT_TRUE(reader.PopArray(&all_paths));
- EXPECT_FALSE(reader.HasMoreData());
-}
-
-TEST_F(ExportedObjectManagerTest, GetManagedObjectsResponseCorrectness) {
- // org.freedesktop.DBus.ObjectManager.GetManagedObjects (
- // out DICT<OBJPATH,
- // DICT<STRING,
- // DICT<STRING,VARIANT>>> )
- dbus::MethodCall method_call(dbus::kObjectManagerInterface,
- dbus::kObjectManagerGetManagedObjects);
- method_call.SetSerial(123);
- EXPECT_CALL(*mock_exported_object_, SendSignal(_)).Times(1);
- om_->ClaimInterface(kClaimedTestPath, kClaimedInterface, property_writer_);
- CallHandleGetManagedObjects(&method_call, response_storer_);
- dbus::MessageReader reader(last_response_.get());
- dbus::MessageReader all_paths(nullptr);
- dbus::MessageReader each_path(nullptr);
- dbus::MessageReader all_interfaces(nullptr);
- dbus::MessageReader each_interface(nullptr);
- ASSERT_TRUE(reader.PopArray(&all_paths));
- ASSERT_TRUE(all_paths.PopDictEntry(&each_path));
- dbus::ObjectPath path;
- ASSERT_TRUE(each_path.PopObjectPath(&path));
- ASSERT_TRUE(each_path.PopArray(&all_interfaces));
- ASSERT_TRUE(all_interfaces.PopDictEntry(&each_interface));
- std::string interface_name;
- ASSERT_TRUE(each_interface.PopString(&interface_name));
- ReadTestPropertyDict(&each_interface);
- EXPECT_FALSE(each_interface.HasMoreData());
- EXPECT_FALSE(all_interfaces.HasMoreData());
- EXPECT_FALSE(each_path.HasMoreData());
- EXPECT_FALSE(all_paths.HasMoreData());
- EXPECT_FALSE(reader.HasMoreData());
- EXPECT_EQ(path, kClaimedTestPath);
- EXPECT_EQ(interface_name, kClaimedInterface);
-}
-
-} // namespace dbus_utils
-
-} // namespace buffet
diff --git a/buffet/main.cc b/buffet/main.cc
index b70421b..66e2cbe 100644
--- a/buffet/main.cc
+++ b/buffet/main.cc
@@ -13,15 +13,15 @@
#include <base/strings/string_util.h>
#include <base/strings/stringprintf.h>
#include <chromeos/async_event_sequencer.h>
+#include <chromeos/exported_object_manager.h>
#include <dbus/bus.h>
#include <sysexits.h>
#include "buffet/dbus_constants.h"
-#include "buffet/exported_object_manager.h"
#include "buffet/manager.h"
using chromeos::dbus_utils::AsyncEventSequencer;
-using buffet::dbus_utils::ExportedObjectManager;
+using chromeos::dbus_utils::ExportedObjectManager;
namespace {
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 1cb0da2..6f7928e 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -12,6 +12,7 @@
#include <base/json/json_writer.h>
#include <chromeos/async_event_sequencer.h>
#include <chromeos/dbus_utils.h>
+#include <chromeos/exported_object_manager.h>
#include <dbus/bus.h>
#include <dbus/object_path.h>
#include <dbus/values_util.h>
@@ -20,16 +21,16 @@
#include "buffet/dbus_constants.h"
#include "buffet/dbus_utils.h"
#include "buffet/error.h"
-#include "buffet/exported_object_manager.h"
using chromeos::dbus_utils::AsyncEventSequencer;
using chromeos::dbus_utils::GetBadArgsError;
+using chromeos::dbus_utils::ExportedObjectManager;
using buffet::dbus_utils::GetDBusError;
namespace buffet {
Manager::Manager(
- const base::WeakPtr<dbus_utils::ExportedObjectManager>& object_manager)
+ const base::WeakPtr<ExportedObjectManager>& object_manager)
: exported_object_(object_manager->GetBus()->GetExportedObject(
dbus::ObjectPath(dbus_constants::kManagerServicePath))),
object_manager_(object_manager) { }
@@ -121,7 +122,7 @@
properties_->Init(
sequencer->GetHandler("Manager properties export failed.", true));
auto claim_interface_task = sequencer->WrapCompletionTask(
- base::Bind(&dbus_utils::ExportedObjectManager::ClaimInterface,
+ base::Bind(&ExportedObjectManager::ClaimInterface,
object_manager_->AsWeakPtr(),
dbus::ObjectPath(dbus_constants::kManagerServicePath),
dbus_constants::kManagerInterface,
diff --git a/buffet/manager.h b/buffet/manager.h
index 6bfccd0..2bb9d5f 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -20,13 +20,15 @@
#include "buffet/dbus_constants.h"
#include "buffet/device_registration_info.h"
-namespace buffet {
-
-class CommandManager;
-
+namespace chromeos {
namespace dbus_utils {
class ExportedObjectManager;
} // namespace dbus_utils
+} // namespace chromeos
+
+namespace buffet {
+
+class CommandManager;
// The Manager is responsible for global state of Buffet. It exposes
// interfaces which affect the entire device such as device registration and
@@ -35,8 +37,8 @@
public:
typedef base::Callback<void(bool success)> OnInitFinish;
- Manager(
- const base::WeakPtr<dbus_utils::ExportedObjectManager>& object_manager);
+ Manager(const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
+ object_manager);
~Manager();
void Init(const OnInitFinish& cb);
@@ -72,7 +74,7 @@
::dbus::MethodCall* method_call);
dbus::ExportedObject* exported_object_; // weak; owned by the Bus object.
- base::WeakPtr<dbus_utils::ExportedObjectManager> object_manager_;
+ base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager> object_manager_;
scoped_ptr<Properties> properties_;
std::shared_ptr<CommandManager> command_manager_;