Chromium Code Reviews| 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 8e16381fd0a0aa2c922d7c919c2d49bc976f5172..0f2277d8b83f52e12b4f4ca6b45cd389447adf4a 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,27 +4,44 @@ |
| #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 extensions { |
| -GuestViewInternalAllocateInstanceIdFunction:: |
| - GuestViewInternalAllocateInstanceIdFunction() { |
| +GuestViewInternalCreateGuestFunction:: |
| + GuestViewInternalCreateGuestFunction() { |
| } |
| -bool GuestViewInternalAllocateInstanceIdFunction::RunAsync() { |
| - EXTENSION_FUNCTION_VALIDATE(!args_->GetSize()); |
| +bool GuestViewInternalCreateGuestFunction::RunAsync() { |
| + std::string view_type; |
|
lazyboy
2014/06/17 23:46:45
Since this function has params now, use
extensions
Fady Samuel
2014/06/18 21:08:33
No, can't because I'd like to keep the dictionary
lazyboy
2014/06/19 16:17:31
Ok.
|
| + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &view_type)); |
| + |
| + base::DictionaryValue* create_params; |
| + EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &create_params)); |
| // Check if we have "webview" permission. |
| CHECK(GetExtension()->permissions_data()->HasAPIPermission( |
| APIPermission::kWebView)); |
| - 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(), |
| + *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; |
| } |