| 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 6df3c5d4193e1391363e61a5dfcd7dd8c68c1855..1b76ea04e2ff2e4cc29904c9b3359cb71e5a0184 100644
|
| --- a/chrome/browser/guest_view/app_view/app_view_guest.cc
|
| +++ b/chrome/browser/guest_view/app_view/app_view_guest.cc
|
| @@ -150,6 +150,12 @@ void AppViewGuest::CreateWebContents(
|
| return;
|
| }
|
|
|
| + const base::DictionaryValue* params = NULL;
|
| + if (!create_params.GetDictionary(appview::kParams, ¶ms)) {
|
| + callback.Run(NULL);
|
| + return;
|
| + }
|
| +
|
| ExtensionService* service =
|
| extensions::ExtensionSystem::Get(browser_context())->extension_service();
|
| const extensions::Extension* guest_extension =
|
| @@ -176,9 +182,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(params->DeepCopy())),
|
| + callback));
|
| return;
|
| }
|
|
|
| @@ -187,7 +195,7 @@ void AppViewGuest::CreateWebContents(
|
| ExtensionHost* host =
|
| process_manager->GetBackgroundHostForExtension(guest_extension->id());
|
| DCHECK(host);
|
| - LaunchAppAndFireEvent(callback, host);
|
| + LaunchAppAndFireEvent(make_scoped_ptr(params->DeepCopy()), callback, host);
|
| }
|
|
|
| void AppViewGuest::DidAttachToEmbedder() {
|
| @@ -229,6 +237,7 @@ void AppViewGuest::CompleteCreateWebContents(
|
| }
|
|
|
| void AppViewGuest::LaunchAppAndFireEvent(
|
| + scoped_ptr<base::DictionaryValue> params,
|
| const WebContentsCreatedCallback& callback,
|
| ExtensionHost* extension_host) {
|
| extensions::ExtensionSystem* system =
|
| @@ -244,6 +253,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::kParams, params.release());
|
| extensions::AppRuntimeEventRouter::DispatchOnEmbedRequestedEvent(
|
| browser_context(), embed_request.Pass(), extension_host->extension());
|
| }
|
|
|