| Index: extensions/browser/api/app_runtime/app_runtime_api.cc
|
| diff --git a/extensions/browser/api/app_runtime/app_runtime_api.cc b/extensions/browser/api/app_runtime/app_runtime_api.cc
|
| index 2b225df2f2f35628f5559423d10840d59fafbd0b..8698a4f5cba597b492a1a2a9a95914cec20aa261 100644
|
| --- a/extensions/browser/api/app_runtime/app_runtime_api.cc
|
| +++ b/extensions/browser/api/app_runtime/app_runtime_api.cc
|
| @@ -8,6 +8,7 @@
|
|
|
| #include <utility>
|
|
|
| +#include "base/memory/ptr_util.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/time/time.h"
|
| #include "base/values.h"
|
| @@ -29,6 +30,24 @@ namespace app_runtime = api::app_runtime;
|
|
|
| namespace {
|
|
|
| +// Converts an ActionType instance to an app_runtime::ActionType instance.
|
| +app_runtime::ActionType MapActionType(ActionType action_type) {
|
| + switch (action_type) {
|
| + case ActionType::NEW_NOTE:
|
| + return app_runtime::ActionType::ACTION_TYPE_NEW_NOTE;
|
| + default:
|
| + return app_runtime::ActionType::ACTION_TYPE_NONE;
|
| + }
|
| +}
|
| +
|
| +// Converts an ActionData instance to an app_runtime::ActionData instance.
|
| +std::unique_ptr<app_runtime::ActionData> BuildActionData(
|
| + ActionData action_data) {
|
| + auto data = base::WrapUnique(new app_runtime::ActionData());
|
| + data->action_type = MapActionType(action_data.action_type);
|
| + return data;
|
| +}
|
| +
|
| void DispatchOnEmbedRequestedEventImpl(
|
| const std::string& extension_id,
|
| std::unique_ptr<base::DictionaryValue> app_embedding_request_data,
|
| @@ -116,6 +135,8 @@ app_runtime::LaunchSource getLaunchSourceEnum(
|
| return app_runtime::LAUNCH_SOURCE_TEST;
|
| case extensions::SOURCE_INSTALLED_NOTIFICATION:
|
| return app_runtime::LAUNCH_SOURCE_INSTALLED_NOTIFICATION;
|
| + case extensions::SOURCE_ACTION:
|
| + return app_runtime::LAUNCH_SOURCE_ACTION;
|
|
|
| default:
|
| return app_runtime::LAUNCH_SOURCE_NONE;
|
| @@ -137,13 +158,18 @@ void AppRuntimeEventRouter::DispatchOnEmbedRequestedEvent(
|
| void AppRuntimeEventRouter::DispatchOnLaunchedEvent(
|
| BrowserContext* context,
|
| const Extension* extension,
|
| - extensions::AppLaunchSource source) {
|
| + extensions::AppLaunchSource source,
|
| + base::Optional<ActionData> action_data) {
|
| app_runtime::LaunchData launch_data;
|
|
|
| app_runtime::LaunchSource source_enum = getLaunchSourceEnum(source);
|
| if (extensions::FeatureSwitch::trace_app_source()->IsEnabled()) {
|
| launch_data.source = source_enum;
|
| }
|
| +
|
| + if (action_data)
|
| + launch_data.action_data = BuildActionData(action_data.value());
|
| +
|
| DispatchOnLaunchedEventImpl(extension->id(), source_enum,
|
| launch_data.ToValue(), context);
|
| }
|
| @@ -165,20 +191,27 @@ void AppRuntimeEventRouter::DispatchOnRestartedEvent(
|
| void AppRuntimeEventRouter::DispatchOnLaunchedEventWithFileEntries(
|
| BrowserContext* context,
|
| const Extension* extension,
|
| + extensions::AppLaunchSource source,
|
| const std::string& handler_id,
|
| const std::vector<EntryInfo>& entries,
|
| - const std::vector<GrantedFileEntry>& file_entries) {
|
| + const std::vector<GrantedFileEntry>& file_entries,
|
| + base::Optional<ActionData> action_data) {
|
| + app_runtime::LaunchSource source_enum = getLaunchSourceEnum(source);
|
| +
|
| // TODO(sergeygs): Use the same way of creating an event (using the generated
|
| // boilerplate) as below in DispatchOnLaunchedEventWithUrl.
|
| std::unique_ptr<base::DictionaryValue> launch_data(new base::DictionaryValue);
|
| launch_data->SetString("id", handler_id);
|
|
|
| - app_runtime::LaunchSource source_enum =
|
| - app_runtime::LAUNCH_SOURCE_FILE_HANDLER;
|
| if (extensions::FeatureSwitch::trace_app_source()->IsEnabled()) {
|
| launch_data->SetString("source", app_runtime::ToString(source_enum));
|
| }
|
|
|
| + if (action_data) {
|
| + launch_data->Set("action_data",
|
| + BuildActionData(action_data.value())->ToValue());
|
| + }
|
| +
|
| std::unique_ptr<base::ListValue> items(new base::ListValue);
|
| DCHECK(file_entries.size() == entries.size());
|
| for (size_t i = 0; i < file_entries.size(); ++i) {
|
|
|