Chromium Code Reviews| Index: components/arc/test/fake_intent_helper_instance.cc |
| diff --git a/components/arc/test/fake_intent_helper_instance.cc b/components/arc/test/fake_intent_helper_instance.cc |
| index d57d8e3a2cf3f16d7c3187fa46ee8069c4e46e23..8c0c6ac5f4d9965c74f1854294191361ee2cba1e 100644 |
| --- a/components/arc/test/fake_intent_helper_instance.cc |
| +++ b/components/arc/test/fake_intent_helper_instance.cc |
| @@ -4,10 +4,34 @@ |
| #include "components/arc/test/fake_intent_helper_instance.h" |
| +#include <utility> |
| + |
| +#include "base/bind.h" |
| +#include "base/threading/sequenced_task_runner_handle.h" |
| + |
| namespace arc { |
| FakeIntentHelperInstance::FakeIntentHelperInstance() {} |
| +FakeIntentHelperInstance::HandledIntent::HandledIntent( |
| + const mojom::IntentInfoPtr& intent, |
| + const mojom::ActivityNamePtr& activity) |
| + : action(intent->action), |
| + categories(intent->categories ? *(intent->categories) |
| + : std::vector<std::string>()), |
|
Daniel Erat
2016/12/16 02:29:03
this is also a bit ugly. all of these fields are b
|
| + data(intent->data ? *(intent->data) : std::string()), |
| + type(intent->type ? *(intent->type) : std::string()), |
| + clip_data_uri(intent->clip_data_uri ? *(intent->clip_data_uri) |
| + : std::string()), |
| + package(activity->package_name), |
| + activity(activity->activity_name ? *(activity->activity_name) |
| + : std::string()) {} |
| + |
| +FakeIntentHelperInstance::HandledIntent::HandledIntent( |
| + const HandledIntent& other) = default; |
| + |
| +FakeIntentHelperInstance::HandledIntent::~HandledIntent() = default; |
| + |
| FakeIntentHelperInstance::Broadcast::Broadcast(const std::string& action, |
| const std::string& package_name, |
| const std::string& cls, |
| @@ -22,6 +46,12 @@ FakeIntentHelperInstance::Broadcast::Broadcast(const Broadcast& broadcast) |
| FakeIntentHelperInstance::Broadcast::~Broadcast() {} |
| +void FakeIntentHelperInstance::SetIntentHandlers( |
| + const std::string& action, |
| + std::vector<mojom::IntentHandlerInfoPtr> handlers) { |
| + intent_handlers_[action] = std::move(handlers); |
| +} |
| + |
| FakeIntentHelperInstance::~FakeIntentHelperInstance() {} |
| void FakeIntentHelperInstance::AddPreferredPackage( |
| @@ -32,7 +62,9 @@ void FakeIntentHelperInstance::GetFileSizeDeprecated( |
| const GetFileSizeDeprecatedCallback& callback) {} |
| void FakeIntentHelperInstance::HandleIntent(mojom::IntentInfoPtr intent, |
| - mojom::ActivityNamePtr activity) {} |
| + mojom::ActivityNamePtr activity) { |
| + handled_intents_.emplace_back(HandledIntent(intent, activity)); |
|
hidehiko
2016/12/16 04:27:12
emplace_back(intent, activity);
Could you take a
Daniel Erat
2016/12/16 05:41:04
thanks; done.
|
| +} |
| void FakeIntentHelperInstance::HandleUrl(const std::string& url, |
| const std::string& package_name) {} |
| @@ -55,7 +87,16 @@ void FakeIntentHelperInstance::RequestActivityIcons( |
| void FakeIntentHelperInstance::RequestIntentHandlerList( |
| mojom::IntentInfoPtr intent, |
| - const RequestIntentHandlerListCallback& callback) {} |
| + const RequestIntentHandlerListCallback& callback) { |
| + std::vector<mojom::IntentHandlerInfoPtr> handlers; |
| + auto it = intent_handlers_.find(intent->action); |
| + if (it != intent_handlers_.end()) { |
| + handlers = std::move(it->second); |
| + intent_handlers_.erase(it); |
| + } |
| + base::SequencedTaskRunnerHandle::Get()->PostTask( |
|
hidehiko
2016/12/16 04:27:12
In ARC code, ThreadTaskRunnerHandle is used. How a
Daniel Erat
2016/12/16 05:41:04
sure. ThreadTaskRunnerHandle has a comment recomme
|
| + FROM_HERE, base::Bind(callback, base::Passed(std::move(handlers)))); |
|
Daniel Erat
2016/12/16 02:29:03
base::Passed(std::move()) looks very wrong to me,
hidehiko
2016/12/16 04:27:12
rvalue is actually needed for base::Passed, so it
Daniel Erat
2016/12/16 05:41:04
Acknowledged.
|
| +} |
| void FakeIntentHelperInstance::RequestUrlHandlerList( |
| const std::string& url, |