Hide UserRole from public interface

All commands added using API executed as Owner's commands.

BUG:24267885
Change-Id: I296e9503cac07d84664941278ffb56f79f695fb0
Reviewed-on: https://weave-review.googlesource.com/1225
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/libweave/include/weave/commands.h b/libweave/include/weave/commands.h
index 68751ac..c77abcb 100644
--- a/libweave/include/weave/commands.h
+++ b/libweave/include/weave/commands.h
@@ -14,13 +14,6 @@
 
 namespace weave {
 
-enum class UserRole {
-  kViewer,
-  kUser,
-  kManager,
-  kOwner,
-};
-
 class Commands {
  public:
   using OnCommandCallback = base::Callback<void(Command*)>;
@@ -34,7 +27,6 @@
 
   // Adds a new command to the command queue.
   virtual bool AddCommand(const base::DictionaryValue& command,
-                          UserRole role,
                           std::string* id,
                           ErrorPtr* error) = 0;
 
diff --git a/libweave/libweave.gypi b/libweave/libweave.gypi
index 3229571..bad1412 100644
--- a/libweave/libweave.gypi
+++ b/libweave/libweave.gypi
@@ -18,7 +18,6 @@
       'src/commands/prop_values.cc',
       'src/commands/schema_constants.cc',
       'src/commands/schema_utils.cc',
-      'src/commands/user_role.cc',
       'src/config.cc',
       'src/data_encoding.cc',
       'src/device_manager.cc',
diff --git a/libweave/src/commands/command_definition.cc b/libweave/src/commands/command_definition.cc
index 78121ac..1deb594 100644
--- a/libweave/src/commands/command_definition.cc
+++ b/libweave/src/commands/command_definition.cc
@@ -7,12 +7,27 @@
 #include <vector>
 
 #include <weave/error.h>
+#include <weave/enum_to_string.h>
 
 #include "src/commands/schema_constants.h"
 #include "src/string_utils.h"
 
 namespace weave {
 
+namespace {
+
+const EnumToStringMap<UserRole>::Map kMap[] = {
+    {UserRole::kViewer, commands::attributes::kCommand_Role_Viewer},
+    {UserRole::kUser, commands::attributes::kCommand_Role_User},
+    {UserRole::kOwner, commands::attributes::kCommand_Role_Owner},
+    {UserRole::kManager, commands::attributes::kCommand_Role_Manager},
+};
+}
+
+template <>
+LIBWEAVE_EXPORT EnumToStringMap<UserRole>::EnumToStringMap()
+    : EnumToStringMap(kMap) {}
+
 bool CommandDefinition::Visibility::FromString(const std::string& str,
                                                ErrorPtr* error) {
   // This special case is useful for places where we want to make a command
diff --git a/libweave/src/commands/command_definition.h b/libweave/src/commands/command_definition.h
index 06d7afd..a6a17f8 100644
--- a/libweave/src/commands/command_definition.h
+++ b/libweave/src/commands/command_definition.h
@@ -15,6 +15,13 @@
 
 namespace weave {
 
+enum class UserRole {
+  kViewer,
+  kUser,
+  kManager,
+  kOwner,
+};
+
 // A simple GCD command definition. This class contains the command category
 // and a full object schema describing the command parameter types and
 // constraints. See comments for CommandDefinitions::LoadCommands for the
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index cf2fc2d..bd7d02c 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -113,6 +113,12 @@
 }
 
 bool CommandManager::AddCommand(const base::DictionaryValue& command,
+                                std::string* id,
+                                ErrorPtr* error) {
+  return AddCommand(command, UserRole::kOwner, id, error);
+}
+
+bool CommandManager::AddCommand(const base::DictionaryValue& command,
                                 UserRole role,
                                 std::string* id,
                                 ErrorPtr* error) {
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h
index c982d2d..ea1392c 100644
--- a/libweave/src/commands/command_manager.h
+++ b/libweave/src/commands/command_manager.h
@@ -36,7 +36,6 @@
 
   // Commands overrides.
   bool AddCommand(const base::DictionaryValue& command,
-                  UserRole role,
                   std::string* id,
                   ErrorPtr* error) override;
   CommandInstance* FindCommand(const std::string& id) override;
@@ -91,6 +90,11 @@
                             CommandDefinition::Visibility visibility,
                             ErrorPtr* error);
 
+  bool AddCommand(const base::DictionaryValue& command,
+                  UserRole role,
+                  std::string* id,
+                  ErrorPtr* error);
+
  private:
   CommandDictionary base_dictionary_;  // Base/std command definitions/schemas.
   CommandDictionary dictionary_;       // Command definitions/schemas.
diff --git a/libweave/src/commands/user_role.cc b/libweave/src/commands/user_role.cc
deleted file mode 100644
index d45d02b..0000000
--- a/libweave/src/commands/user_role.cc
+++ /dev/null
@@ -1,30 +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 <weave/error.h>
-
-#include <weave/commands.h>
-#include <weave/enum_to_string.h>
-#include <weave/export.h>
-
-#include "src/commands/schema_constants.h"
-
-namespace weave {
-
-namespace {
-
-const EnumToStringMap<UserRole>::Map kMap[] = {
-    {UserRole::kViewer, commands::attributes::kCommand_Role_Viewer},
-    {UserRole::kUser, commands::attributes::kCommand_Role_User},
-    {UserRole::kOwner, commands::attributes::kCommand_Role_Owner},
-    {UserRole::kManager, commands::attributes::kCommand_Role_Manager},
-};
-
-}  // namespace
-
-template <>
-LIBWEAVE_EXPORT EnumToStringMap<UserRole>::EnumToStringMap()
-    : EnumToStringMap(kMap) {}
-
-}  // namespace weave