| Index: chrome/browser/extensions/api/guest_view/guest_view_internal_api.cc
|
| diff --git a/chrome/browser/extensions/api/guest_view/guest_view_internal_api.cc b/chrome/browser/extensions/api/guest_view/guest_view_internal_api.cc
|
| index 41d119154b457dd1a6d1a1c8f7deccd33fe6879b..d27d4c1da609f41f7f4cbb1c4af31366cc664532 100644
|
| --- a/chrome/browser/extensions/api/guest_view/guest_view_internal_api.cc
|
| +++ b/chrome/browser/extensions/api/guest_view/guest_view_internal_api.cc
|
| @@ -4,9 +4,12 @@
|
|
|
| #include "chrome/browser/extensions/api/guest_view/guest_view_internal_api.h"
|
|
|
| +#include "chrome/browser/guest_view/guest_view_base.h"
|
| #include "chrome/browser/guest_view/guest_view_manager.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/common/extensions/api/guest_view_internal.h"
|
| +#include "content/public/browser/render_process_host.h"
|
| +#include "content/public/browser/render_view_host.h"
|
| #include "extensions/common/permissions/permissions_data.h"
|
|
|
| namespace {
|
| @@ -16,25 +19,37 @@ const char* kWebViewPermissionRequiredError =
|
|
|
| namespace extensions {
|
|
|
| -GuestViewInternalAllocateInstanceIdFunction::
|
| - GuestViewInternalAllocateInstanceIdFunction() {
|
| +GuestViewInternalCreateGuestFunction::
|
| + GuestViewInternalCreateGuestFunction() {
|
| }
|
|
|
| -bool GuestViewInternalAllocateInstanceIdFunction::RunAsync() {
|
| - EXTENSION_FUNCTION_VALIDATE(!args_->GetSize());
|
| +bool GuestViewInternalCreateGuestFunction::RunAsync() {
|
| + std::string view_type;
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &view_type));
|
|
|
| + base::DictionaryValue* create_params;
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &create_params));
|
|
|
| if (!GetExtension()->permissions_data()->HasAPIPermission(
|
| APIPermission::kWebView)) {
|
| LOG(ERROR) << kWebViewPermissionRequiredError;
|
| error_ = kWebViewPermissionRequiredError;
|
| SendResponse(false);
|
| - return false;
|
| }
|
|
|
| - int instanceId = GuestViewManager::FromBrowserContext(browser_context())
|
| - ->GetNextInstanceID();
|
| - SetResult(base::Value::CreateIntegerValue(instanceId));
|
| + GuestViewManager* guest_view_manager =
|
| + GuestViewManager::FromBrowserContext(browser_context());
|
| +
|
| + content::WebContents* guest_web_contents =
|
| + guest_view_manager->CreateGuest(view_type,
|
| + extension_id(),
|
| + render_view_host()->GetProcess()->GetID(),
|
| + *create_params);
|
| + if (!guest_web_contents)
|
| + return false;
|
| +
|
| + GuestViewBase* guest = GuestViewBase::FromWebContents(guest_web_contents);
|
| + SetResult(base::Value::CreateIntegerValue(guest->GetGuestInstanceID()));
|
| SendResponse(true);
|
| return true;
|
| }
|
|
|