Chromium Code Reviews| Index: extensions/browser/api/lock_screen_data/lock_screen_data_api.cc |
| diff --git a/extensions/browser/api/lock_screen_data/lock_screen_data_api.cc b/extensions/browser/api/lock_screen_data/lock_screen_data_api.cc |
| index 87943dfacb8015caf3a88339750868978d9889ed..25759aefa71766474f2b376a466efc05c2c0417c 100644 |
| --- a/extensions/browser/api/lock_screen_data/lock_screen_data_api.cc |
| +++ b/extensions/browser/api/lock_screen_data/lock_screen_data_api.cc |
| @@ -4,21 +4,66 @@ |
| #include "extensions/browser/api/lock_screen_data/lock_screen_data_api.h" |
| -#include <memory> |
| +#include <string> |
| +#include <utility> |
| #include <vector> |
| +#include "extensions/browser/api/lock_screen_data/data_item.h" |
| +#include "extensions/browser/api/lock_screen_data/item_storage.h" |
| +#include "extensions/browser/api/lock_screen_data/operation_result.h" |
| #include "extensions/common/api/lock_screen_data.h" |
| namespace extensions { |
| +namespace { |
| + |
| +std::string GetErrorString(lock_screen_data::OperationResult result) { |
| + switch (result) { |
| + case lock_screen_data::OperationResult::kSuccess: |
| + NOTREACHED() << "Expected a failure code."; |
| + return "Unknown"; |
| + case lock_screen_data::OperationResult::kFailed: |
| + return "Unknown"; |
| + case lock_screen_data::OperationResult::kInvalidKey: |
| + case lock_screen_data::OperationResult::kWrongKey: |
| + return "Internal - encryption"; |
| + case lock_screen_data::OperationResult::kAlreadyRegistered: |
| + return "Duplicate item"; |
| + case lock_screen_data::OperationResult::kNotFound: |
| + case lock_screen_data::OperationResult::kUnknownExtension: |
| + return "Not found"; |
| + } |
| + NOTREACHED() << "Unknown operation status"; |
| + return "Unknown"; |
| +} |
| + |
| +} // namespace |
| + |
| LockScreenDataCreateFunction::LockScreenDataCreateFunction() {} |
| LockScreenDataCreateFunction::~LockScreenDataCreateFunction() {} |
| ExtensionFunction::ResponseAction LockScreenDataCreateFunction::Run() { |
| + if (!lock_screen_data::ItemStorage::Get(browser_context())) |
| + return RespondNow(Error("Not available")); |
|
rkc
2017/07/10 20:04:00
This should never happen right? If so, then put in
tbarzic
2017/07/10 22:29:48
For create, it should not happen (as this one is o
|
| + |
| + lock_screen_data::ItemStorage::Get(browser_context()) |
| + ->CreateItem(extension_id(), |
| + base::Bind(&LockScreenDataCreateFunction::OnDone, this)); |
| + return RespondLater(); |
| +} |
| + |
| +void LockScreenDataCreateFunction::OnDone( |
| + lock_screen_data::OperationResult result, |
| + const lock_screen_data::DataItem* item) { |
| + if (result != lock_screen_data::OperationResult::kSuccess) { |
| + Respond(Error(GetErrorString(result))); |
| + return; |
| + } |
| + |
| api::lock_screen_data::DataItemInfo item_info; |
| - item_info.id = "fake"; |
| - return RespondNow( |
| + item_info.id = item->id(); |
| + Respond( |
| ArgumentList(api::lock_screen_data::Create::Results::Create(item_info))); |
| } |
| @@ -27,8 +72,28 @@ LockScreenDataGetAllFunction::LockScreenDataGetAllFunction() {} |
| LockScreenDataGetAllFunction::~LockScreenDataGetAllFunction() {} |
| ExtensionFunction::ResponseAction LockScreenDataGetAllFunction::Run() { |
| + if (!lock_screen_data::ItemStorage::Get(browser_context())) |
| + return RespondNow(Error("Not available")); |
| + |
| + lock_screen_data::ItemStorage::Get(browser_context()) |
| + ->GetAllForExtension( |
| + extension_id(), |
| + base::Bind(&LockScreenDataGetAllFunction::OnDone, this)); |
| + return RespondLater(); |
| +} |
| + |
| +void LockScreenDataGetAllFunction::OnDone( |
| + const std::vector<const lock_screen_data::DataItem*>& items) { |
| std::vector<api::lock_screen_data::DataItemInfo> items_info; |
| - return RespondNow( |
| + for (auto* const item : items) { |
| + if (!item) |
| + continue; |
| + api::lock_screen_data::DataItemInfo item_info; |
| + item_info.id = item->id(); |
| + items_info.emplace_back(std::move(item_info)); |
| + } |
| + |
| + Respond( |
| ArgumentList(api::lock_screen_data::GetAll::Results::Create(items_info))); |
| } |
| @@ -37,11 +102,29 @@ LockScreenDataGetContentFunction::LockScreenDataGetContentFunction() {} |
| LockScreenDataGetContentFunction::~LockScreenDataGetContentFunction() {} |
| ExtensionFunction::ResponseAction LockScreenDataGetContentFunction::Run() { |
| + if (!lock_screen_data::ItemStorage::Get(browser_context())) |
| + return RespondNow(Error("Not available")); |
| + |
| std::unique_ptr<api::lock_screen_data::GetContent::Params> params( |
| api::lock_screen_data::GetContent::Params::Create(*args_)); |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| - return RespondNow(Error("Not found")); |
| + lock_screen_data::ItemStorage::Get(browser_context()) |
| + ->GetItemContent( |
| + extension_id(), params->id, |
| + base::Bind(&LockScreenDataGetContentFunction::OnDone, this)); |
| + return RespondLater(); |
| +} |
| + |
| +void LockScreenDataGetContentFunction::OnDone( |
| + lock_screen_data::OperationResult result, |
| + std::unique_ptr<std::vector<char>> data) { |
| + if (result == lock_screen_data::OperationResult::kSuccess) { |
| + Respond(ArgumentList( |
| + api::lock_screen_data::GetContent::Results::Create(*data))); |
| + return; |
| + } |
| + Respond(Error(GetErrorString(result))); |
| } |
| LockScreenDataSetContentFunction::LockScreenDataSetContentFunction() {} |
| @@ -49,11 +132,27 @@ LockScreenDataSetContentFunction::LockScreenDataSetContentFunction() {} |
| LockScreenDataSetContentFunction::~LockScreenDataSetContentFunction() {} |
| ExtensionFunction::ResponseAction LockScreenDataSetContentFunction::Run() { |
| + if (!lock_screen_data::ItemStorage::Get(browser_context())) |
| + return RespondNow(Error("Not available")); |
| + |
| std::unique_ptr<api::lock_screen_data::SetContent::Params> params( |
| api::lock_screen_data::SetContent::Params::Create(*args_)); |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| - return RespondNow(Error("Not found")); |
| + lock_screen_data::ItemStorage::Get(browser_context()) |
| + ->SetItemContent( |
| + extension_id(), params->id, params->data, |
| + base::Bind(&LockScreenDataSetContentFunction::OnDone, this)); |
| + return RespondLater(); |
| +} |
| + |
| +void LockScreenDataSetContentFunction::OnDone( |
| + lock_screen_data::OperationResult result) { |
| + if (result == lock_screen_data::OperationResult::kSuccess) { |
| + Respond(NoArguments()); |
| + return; |
| + } |
| + Respond(Error(GetErrorString(result))); |
| } |
| LockScreenDataDeleteFunction::LockScreenDataDeleteFunction() {} |
| @@ -64,7 +163,20 @@ ExtensionFunction::ResponseAction LockScreenDataDeleteFunction::Run() { |
| std::unique_ptr<api::lock_screen_data::Delete::Params> params( |
| api::lock_screen_data::Delete::Params::Create(*args_)); |
| EXTENSION_FUNCTION_VALIDATE(params.get()); |
| - return RespondNow(Error("Not found.")); |
| + |
| + lock_screen_data::ItemStorage::Get(browser_context()) |
| + ->DeleteItem(extension_id(), params->id, |
| + base::Bind(&LockScreenDataDeleteFunction::OnDone, this)); |
| + return RespondLater(); |
| +} |
| + |
| +void LockScreenDataDeleteFunction::OnDone( |
| + lock_screen_data::OperationResult result) { |
| + if (result == lock_screen_data::OperationResult::kSuccess) { |
| + Respond(NoArguments()); |
| + return; |
| + } |
| + Respond(Error(GetErrorString(result))); |
| } |
| } // namespace extensions |