Remove hard-coded check for standard command definitions

Libweave will contain only definition of standard commands it will
handle itself, updateBaseConfiguration and updateDeviceInfo.

BUG:25304415
Change-Id: I926b2e1e6324d3181a22cc7131368bdbb9214d61
Reviewed-on: https://weave-review.googlesource.com/1425
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/libweave/libweave.gypi b/libweave/libweave.gypi
index f65eda7..c32e99b 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/standard_definitions.cc',
       'src/config.cc',
       'src/data_encoding.cc',
       'src/device_manager.cc',
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index 5cebb87..c3aa616 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -39,8 +39,24 @@
 
   device->AddCommandDefinitionsFromJson(R"({
     "base": {
-      "updateBaseConfiguration": {},
-      "updateDeviceInfo": {}
+      "updateBaseConfiguration": {
+        "minimalRole": "manager",
+        "parameters": {
+          "localDiscoveryEnabled": "boolean",
+          "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
+          "localPairingEnabled": "boolean"
+        },
+        "results": {}
+      },
+      "updateDeviceInfo": {
+        "minimalRole": "manager",
+        "parameters": {
+          "description": "string",
+          "name": "string",
+          "location": "string"
+        },
+        "results": {}
+      }
     }
   })");
 
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 565c6aa..a025e44 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -35,7 +35,6 @@
         .WillRepeatedly(Return(true));
 
     command_manager_ = std::make_shared<CommandManager>();
-    command_manager_->Startup();
 
     state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_);
 
@@ -106,6 +105,47 @@
   int command_id_{0};
 };
 
+TEST_F(BaseApiHandlerTest, Initialization) {
+  auto command_defs =
+      command_manager_->GetCommandDictionary().GetCommandsAsJson(
+          [](const CommandDefinition* def) { return true; }, true, nullptr);
+
+  auto expected = R"({
+    "base": {
+      "updateBaseConfiguration": {
+         "minimalRole": "manager",
+         "parameters": {
+            "localAnonymousAccessMaxRole": {
+               "enum": [ "none", "viewer", "user" ],
+               "type": "string"
+            },
+            "localDiscoveryEnabled": {
+               "type": "boolean"
+            },
+            "localPairingEnabled": {
+               "type": "boolean"
+            }
+         }
+      },
+      "updateDeviceInfo": {
+         "minimalRole": "manager",
+         "parameters": {
+            "description": {
+               "type": "string"
+            },
+            "location": {
+               "type": "string"
+            },
+            "name": {
+               "type": "string"
+            }
+         }
+      }
+    }
+  })";
+  EXPECT_JSON_EQ(expected, *command_defs);
+}
+
 TEST_F(BaseApiHandlerTest, UpdateBaseConfiguration) {
   const Settings& settings = dev_reg_->GetSettings();
 
diff --git a/libweave/src/commands/command_manager.cc b/libweave/src/commands/command_manager.cc
index 595613f..75d8295 100644
--- a/libweave/src/commands/command_manager.cc
+++ b/libweave/src/commands/command_manager.cc
@@ -9,7 +9,6 @@
 #include <weave/error.h>
 
 #include "src/commands/schema_constants.h"
-#include "src/commands/standard_definitions.h"
 #include "src/utils.h"
 
 namespace weave {
@@ -27,22 +26,9 @@
   return dictionary_;
 }
 
-bool CommandManager::LoadStandardCommands(const base::DictionaryValue& dict,
-                                          ErrorPtr* error) {
-  return standard_dictionary_.LoadCommands(dict, nullptr, error);
-}
-
-bool CommandManager::LoadStandardCommands(const std::string& json,
-                                          ErrorPtr* error) {
-  std::unique_ptr<const base::DictionaryValue> dict = LoadJsonDict(json, error);
-  if (!dict)
-    return false;
-  return LoadStandardCommands(*dict, error);
-}
-
 bool CommandManager::LoadCommands(const base::DictionaryValue& dict,
                                   ErrorPtr* error) {
-  bool result = dictionary_.LoadCommands(dict, &standard_dictionary_, error);
+  bool result = dictionary_.LoadCommands(dict, nullptr, error);
   for (const auto& cb : on_command_changed_)
     cb.Run();
   return result;
@@ -56,13 +42,6 @@
   return LoadCommands(*dict, error);
 }
 
-void CommandManager::Startup() {
-  LOG(INFO) << "Initializing CommandManager.";
-
-  // Load global standard GCD command dictionary.
-  CHECK(LoadStandardCommands(kStandardCommandDefs, nullptr));
-}
-
 void CommandManager::AddCommand(
     std::unique_ptr<CommandInstance> command_instance) {
   command_queue_.Add(std::move(command_instance));
diff --git a/libweave/src/commands/command_manager.h b/libweave/src/commands/command_manager.h
index ee8aa69..7cc8907 100644
--- a/libweave/src/commands/command_manager.h
+++ b/libweave/src/commands/command_manager.h
@@ -44,15 +44,6 @@
   // Returns the command definitions for the device.
   const CommandDictionary& GetCommandDictionary() const;
 
-  // Loads standard GCD command definitions.
-  // |dict| is the full JSON schema of standard GCD commands. These commands
-  // are not necessarily supported by a particular device but rather
-  // all the standard commands defined by GCD standard for all known/supported
-  // device kinds.
-  // On success, returns true. Otherwise, |error| contains additional
-  // error information.
-  bool LoadStandardCommands(const base::DictionaryValue& dict, ErrorPtr* error);
-
   // Same as the overload above, but takes a path to a json file to read
   // the base command definitions from.
   bool LoadStandardCommands(const std::string& json, ErrorPtr* error);
@@ -66,10 +57,6 @@
   bool LoadCommands(const std::string& json,
                     ErrorPtr* error);
 
-  // Startup method to be called by buffet daemon at startup.
-  // Initializes standard GCD command dictionary.
-  void Startup();
-
   // Adds a new command to the command queue.
   void AddCommand(std::unique_ptr<CommandInstance> command_instance);
 
@@ -84,8 +71,7 @@
                   ErrorPtr* error);
 
  private:
-  CommandDictionary standard_dictionary_;  // Standard command definitions.
-  CommandDictionary dictionary_;           // Registered definitions.
+  CommandDictionary dictionary_;  // Registered definitions.
   CommandQueue command_queue_;
   std::vector<base::Callback<void()>> on_command_changed_;
   uint32_t next_command_id_{0};
diff --git a/libweave/src/commands/command_manager_unittest.cc b/libweave/src/commands/command_manager_unittest.cc
index ff8c5d8..bbdd7ac 100644
--- a/libweave/src/commands/command_manager_unittest.cc
+++ b/libweave/src/commands/command_manager_unittest.cc
@@ -63,12 +63,6 @@
   EXPECT_TRUE(manager.GetCommandDictionary().IsEmpty());
 }
 
-TEST(CommandManager, LoadStandardCommandsJSON) {
-  CommandManager manager;
-  auto json = CreateDictionaryValue(kTestBaseCommands);
-  EXPECT_TRUE(manager.LoadStandardCommands(*json, nullptr));
-}
-
 TEST(CommandManager, LoadCommandsDict) {
   CommandManager manager;
   auto json = CreateDictionaryValue(kTestVendorCommands);
@@ -77,20 +71,6 @@
 
 TEST(CommandManager, LoadCommandsJson) {
   CommandManager manager;
-  // Load some standard command definitions first.
-  auto json = CreateDictionaryValue(R"({
-    'base': {
-      'reboot': {
-        'parameters': {'delay': 'integer'},
-        'results': {}
-      },
-      'shutdown': {
-        'parameters': {},
-        'results': {}
-      }
-    }
-  })");
-  manager.LoadStandardCommands(*json, nullptr);
 
   // Load device-supported commands.
   auto json_str = R"({
@@ -115,7 +95,6 @@
 
 TEST(CommandManager, ShouldLoadStandardAndTestDefinitions) {
   CommandManager manager;
-  manager.Startup();
   ASSERT_TRUE(manager.LoadCommands(kTestVendorCommands, nullptr));
   ASSERT_TRUE(manager.LoadCommands(kTestTestCommands, nullptr));
   EXPECT_EQ(3, manager.GetCommandDictionary().GetSize());
diff --git a/libweave/src/commands/standard_definitions.cc b/libweave/src/commands/standard_definitions.cc
deleted file mode 100644
index 4c20984..0000000
--- a/libweave/src/commands/standard_definitions.cc
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2015 The Weave 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 "src/commands/standard_definitions.h"
-
-namespace weave {
-
-const char kStandardCommandDefs[] = R"({
-  "base": {
-    "updateBaseConfiguration": {
-      "minimalRole": "manager",
-      "parameters": {
-        "localDiscoveryEnabled": "boolean",
-        "localAnonymousAccessMaxRole": [ "none", "viewer", "user" ],
-        "localPairingEnabled": "boolean"
-      },
-      "results": {}
-    },
-    "reboot": {
-      "minimalRole": "user",
-      "parameters": {},
-      "results": {}
-    },
-    "identify": {
-      "minimalRole": "user",
-      "parameters": {},
-      "results": {}
-    },
-    "updateDeviceInfo": {
-      "minimalRole": "manager",
-      "parameters": {
-        "description": "string",
-        "name": "string",
-        "location": "string"
-      },
-      "results": {}
-    }
-  }
-})";
-
-}  // namespace weave
diff --git a/libweave/src/commands/standard_definitions.h b/libweave/src/commands/standard_definitions.h
deleted file mode 100644
index 9c9f3e1..0000000
--- a/libweave/src/commands/standard_definitions.h
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2015 The Weave 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 LIBWEAVE_SRC_COMMANDS_STANDARD_DEFINITIONS_H_
-#define LIBWEAVE_SRC_COMMANDS_STANDARD_DEFINITIONS_H_
-
-namespace weave {
-
-extern const char kStandardCommandDefs[];
-
-}  // namespace weave
-
-#endif  // LIBWEAVE_SRC_COMMANDS_STANDARD_DEFINITIONS_H_
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 1b21961..c0b8e9a 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -34,7 +34,6 @@
                              provider::Wifi* wifi,
                              provider::Bluetooth* bluetooth) {
   command_manager_ = std::make_shared<CommandManager>();
-  command_manager_->Startup();
   state_change_queue_.reset(new StateChangeQueue(kMaxStateChangeQueueSize));
   state_manager_ = std::make_shared<StateManager>(state_change_queue_.get());
 
diff --git a/libweave/src/device_registration_info_unittest.cc b/libweave/src/device_registration_info_unittest.cc
index a07ea40..91b8ff5 100644
--- a/libweave/src/device_registration_info_unittest.cc
+++ b/libweave/src/device_registration_info_unittest.cc
@@ -350,21 +350,6 @@
 }
 
 TEST_F(DeviceRegistrationInfoTest, RegisterDevice) {
-  auto json_base = CreateDictionaryValue(R"({
-    'base': {
-      'reboot': {
-        'parameters': {'delay': 'integer'},
-        'minimalRole': 'user',
-        'results': {}
-      },
-      'shutdown': {
-        'parameters': {},
-        'minimalRole': 'user',
-        'results': {}
-      }
-    }
-  })");
-  EXPECT_TRUE(command_manager_->LoadStandardCommands(*json_base, nullptr));
   auto json_cmds = CreateDictionaryValue(R"({
     'base': {
       'reboot': {
diff --git a/libweave/src/states/state_manager.cc b/libweave/src/states/state_manager.cc
index 268dd04..fe6e669 100644
--- a/libweave/src/states/state_manager.cc
+++ b/libweave/src/states/state_manager.cc
@@ -7,7 +7,6 @@
 #include <base/logging.h>
 #include <base/values.h>
 
-#include "src/commands/standard_definitions.h"
 #include "src/json_error_codes.h"
 #include "src/states/error_codes.h"
 #include "src/states/state_change_queue_interface.h"