Index: chrome/browser/guest_view/app_view/app_view_guest.cc |
diff --git a/chrome/browser/guest_view/app_view/app_view_guest.cc b/chrome/browser/guest_view/app_view/app_view_guest.cc |
index 66f46c241004aa2836a14383356b61989d4a15ad..6aadc186b428dc81ceb8acacb0ea2fc5daa6a24d 100644 |
--- a/chrome/browser/guest_view/app_view/app_view_guest.cc |
+++ b/chrome/browser/guest_view/app_view/app_view_guest.cc |
@@ -151,6 +151,12 @@ void AppViewGuest::CreateWebContents( |
return; |
} |
+ const base::DictionaryValue* data = NULL; |
+ if (!create_params.GetDictionary(appview::kData, &data)) { |
+ callback.Run(NULL); |
+ return; |
+ } |
+ |
ExtensionService* service = |
ExtensionSystem::Get(browser_context())->extension_service(); |
const Extension* guest_extension = service->GetExtensionById(app_id, false); |
@@ -175,9 +181,11 @@ void AppViewGuest::CreateWebContents( |
if (queue->ShouldEnqueueTask(browser_context(), guest_extension)) { |
queue->AddPendingTask(browser_context(), |
guest_extension->id(), |
- base::Bind(&AppViewGuest::LaunchAppAndFireEvent, |
- weak_ptr_factory_.GetWeakPtr(), |
- callback)); |
+ base::Bind( |
+ &AppViewGuest::LaunchAppAndFireEvent, |
+ weak_ptr_factory_.GetWeakPtr(), |
+ base::Passed(make_scoped_ptr(data->DeepCopy())), |
+ callback)); |
return; |
} |
@@ -186,7 +194,7 @@ void AppViewGuest::CreateWebContents( |
ExtensionHost* host = |
process_manager->GetBackgroundHostForExtension(guest_extension->id()); |
DCHECK(host); |
- LaunchAppAndFireEvent(callback, host); |
+ LaunchAppAndFireEvent(make_scoped_ptr(data->DeepCopy()), callback, host); |
} |
void AppViewGuest::DidAttachToEmbedder() { |
@@ -228,6 +236,7 @@ void AppViewGuest::CompleteCreateWebContents( |
} |
void AppViewGuest::LaunchAppAndFireEvent( |
+ scoped_ptr<base::DictionaryValue> data, |
const WebContentsCreatedCallback& callback, |
ExtensionHost* extension_host) { |
ExtensionSystem* system = ExtensionSystem::Get(browser_context()); |
@@ -242,6 +251,7 @@ void AppViewGuest::LaunchAppAndFireEvent( |
scoped_ptr<base::DictionaryValue> embed_request(new base::DictionaryValue()); |
embed_request->SetInteger(appview::kGuestInstanceID, GetGuestInstanceID()); |
embed_request->SetString(appview::kEmbedderID, embedder_extension_id()); |
+ embed_request->Set(appview::kData, data.release()); |
AppRuntimeEventRouter::DispatchOnEmbedRequestedEvent( |
browser_context(), embed_request.Pass(), extension_host->extension()); |
} |