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..5f4d3c747f0336c00af5341d4ced7f58a030e71e 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: |
Daniel Erat
2016/08/10 22:19:24
can you leave out the default block here to get a
jdufault
2016/08/10 22:33:35
Done.
|
+ 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, |
@@ -137,13 +156,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 +189,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) { |