| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/renderer/guest_view/guest_view_internal_custom_bindings.h" | 5 #include "extensions/renderer/guest_view/guest_view_internal_custom_bindings.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 CHECK(args[0]->IsInt32()); | 130 CHECK(args[0]->IsInt32()); |
| 131 // Guest Instance ID. | 131 // Guest Instance ID. |
| 132 CHECK(args[1]->IsInt32()); | 132 CHECK(args[1]->IsInt32()); |
| 133 // Attach Parameters. | 133 // Attach Parameters. |
| 134 CHECK(args[2]->IsObject()); | 134 CHECK(args[2]->IsObject()); |
| 135 // Optional Callback Function. | 135 // Optional Callback Function. |
| 136 CHECK(args.Length() < 4 || args[3]->IsFunction()); | 136 CHECK(args.Length() < 4 || args[3]->IsFunction()); |
| 137 | 137 |
| 138 int element_instance_id = args[0]->Int32Value(); | 138 int element_instance_id = args[0]->Int32Value(); |
| 139 // An element instance ID uniquely identifies a GuestViewContainer. | 139 // An element instance ID uniquely identifies a GuestViewContainer. |
| 140 auto guest_view_container = | 140 auto* guest_view_container = |
| 141 guest_view::GuestViewContainer::FromID(element_instance_id); | 141 guest_view::GuestViewContainer::FromID(element_instance_id); |
| 142 | 142 |
| 143 // TODO(fsamuel): Should we be reporting an error if the element instance ID | 143 // TODO(fsamuel): Should we be reporting an error if the element instance ID |
| 144 // is invalid? | 144 // is invalid? |
| 145 if (!guest_view_container) | 145 if (!guest_view_container) |
| 146 return; | 146 return; |
| 147 | 147 |
| 148 int guest_instance_id = args[1]->Int32Value(); | 148 int guest_instance_id = args[1]->Int32Value(); |
| 149 | 149 |
| 150 std::unique_ptr<base::DictionaryValue> params; | 150 std::unique_ptr<base::DictionaryValue> params; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 175 const v8::FunctionCallbackInfo<v8::Value>& args) { | 175 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 176 // Allow for an optional callback parameter. | 176 // Allow for an optional callback parameter. |
| 177 CHECK(args.Length() >= 1 && args.Length() <= 2); | 177 CHECK(args.Length() >= 1 && args.Length() <= 2); |
| 178 // Element Instance ID. | 178 // Element Instance ID. |
| 179 CHECK(args[0]->IsInt32()); | 179 CHECK(args[0]->IsInt32()); |
| 180 // Optional Callback Function. | 180 // Optional Callback Function. |
| 181 CHECK(args.Length() < 2 || args[1]->IsFunction()); | 181 CHECK(args.Length() < 2 || args[1]->IsFunction()); |
| 182 | 182 |
| 183 int element_instance_id = args[0]->Int32Value(); | 183 int element_instance_id = args[0]->Int32Value(); |
| 184 // An element instance ID uniquely identifies a GuestViewContainer. | 184 // An element instance ID uniquely identifies a GuestViewContainer. |
| 185 auto guest_view_container = | 185 auto* guest_view_container = |
| 186 guest_view::GuestViewContainer::FromID(element_instance_id); | 186 guest_view::GuestViewContainer::FromID(element_instance_id); |
| 187 | 187 |
| 188 // TODO(fsamuel): Should we be reporting an error if the element instance ID | 188 // TODO(fsamuel): Should we be reporting an error if the element instance ID |
| 189 // is invalid? | 189 // is invalid? |
| 190 if (!guest_view_container) | 190 if (!guest_view_container) |
| 191 return; | 191 return; |
| 192 | 192 |
| 193 linked_ptr<guest_view::GuestViewRequest> request( | 193 linked_ptr<guest_view::GuestViewRequest> request( |
| 194 new guest_view::GuestViewDetachRequest( | 194 new guest_view::GuestViewDetachRequest( |
| 195 guest_view_container, args.Length() == 2 ? args[1].As<v8::Function>() | 195 guest_view_container, args.Length() == 2 ? args[1].As<v8::Function>() |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 // There are two parameters. | 375 // There are two parameters. |
| 376 CHECK(args.Length() == 2); | 376 CHECK(args.Length() == 2); |
| 377 // Element Instance ID. | 377 // Element Instance ID. |
| 378 CHECK(args[0]->IsInt32()); | 378 CHECK(args[0]->IsInt32()); |
| 379 // Callback function. | 379 // Callback function. |
| 380 CHECK(args[1]->IsFunction()); | 380 CHECK(args[1]->IsFunction()); |
| 381 | 381 |
| 382 int element_instance_id = args[0]->Int32Value(); | 382 int element_instance_id = args[0]->Int32Value(); |
| 383 // An element instance ID uniquely identifies a ExtensionsGuestViewContainer | 383 // An element instance ID uniquely identifies a ExtensionsGuestViewContainer |
| 384 // within a RenderView. | 384 // within a RenderView. |
| 385 auto guest_view_container = static_cast<ExtensionsGuestViewContainer*>( | 385 auto* guest_view_container = static_cast<ExtensionsGuestViewContainer*>( |
| 386 guest_view::GuestViewContainer::FromID(element_instance_id)); | 386 guest_view::GuestViewContainer::FromID(element_instance_id)); |
| 387 if (!guest_view_container) | 387 if (!guest_view_container) |
| 388 return; | 388 return; |
| 389 | 389 |
| 390 guest_view_container->RegisterElementResizeCallback( | 390 guest_view_container->RegisterElementResizeCallback( |
| 391 args[1].As<v8::Function>(), args.GetIsolate()); | 391 args[1].As<v8::Function>(), args.GetIsolate()); |
| 392 | 392 |
| 393 args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true)); | 393 args.GetReturnValue().Set(v8::Boolean::New(context()->isolate(), true)); |
| 394 } | 394 } |
| 395 | 395 |
| 396 void GuestViewInternalCustomBindings::RegisterView( | 396 void GuestViewInternalCustomBindings::RegisterView( |
| 397 const v8::FunctionCallbackInfo<v8::Value>& args) { | 397 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 398 // There are three parameters. | 398 // There are three parameters. |
| 399 CHECK(args.Length() == 3); | 399 CHECK(args.Length() == 3); |
| 400 // View Instance ID. | 400 // View Instance ID. |
| 401 CHECK(args[0]->IsInt32()); | 401 CHECK(args[0]->IsInt32()); |
| 402 // View element. | 402 // View element. |
| 403 CHECK(args[1]->IsObject()); | 403 CHECK(args[1]->IsObject()); |
| 404 // View type (e.g. "webview"). | 404 // View type (e.g. "webview"). |
| 405 CHECK(args[2]->IsString()); | 405 CHECK(args[2]->IsString()); |
| 406 | 406 |
| 407 // A reference to the view object is stored in |weak_view_map| using its view | 407 // A reference to the view object is stored in |weak_view_map| using its view |
| 408 // ID as the key. The reference is made weak so that it will not extend the | 408 // ID as the key. The reference is made weak so that it will not extend the |
| 409 // lifetime of the object. | 409 // lifetime of the object. |
| 410 int view_instance_id = args[0]->Int32Value(); | 410 int view_instance_id = args[0]->Int32Value(); |
| 411 auto object = | 411 auto* object = |
| 412 new v8::Global<v8::Object>(args.GetIsolate(), args[1].As<v8::Object>()); | 412 new v8::Global<v8::Object>(args.GetIsolate(), args[1].As<v8::Object>()); |
| 413 weak_view_map.Get().insert(std::make_pair(view_instance_id, object)); | 413 weak_view_map.Get().insert(std::make_pair(view_instance_id, object)); |
| 414 | 414 |
| 415 // The |view_instance_id| is given to the SetWeak callback so that that view's | 415 // The |view_instance_id| is given to the SetWeak callback so that that view's |
| 416 // entry in |weak_view_map| can be cleared when the view object is garbage | 416 // entry in |weak_view_map| can be cleared when the view object is garbage |
| 417 // collected. | 417 // collected. |
| 418 object->SetWeak(new int(view_instance_id), | 418 object->SetWeak(new int(view_instance_id), |
| 419 &GuestViewInternalCustomBindings::ResetMapEntry, | 419 &GuestViewInternalCustomBindings::ResetMapEntry, |
| 420 v8::WeakCallbackType::kParameter); | 420 v8::WeakCallbackType::kParameter); |
| 421 | 421 |
| 422 // Let the GuestViewManager know that a GuestView has been created. | 422 // Let the GuestViewManager know that a GuestView has been created. |
| 423 const std::string& view_type = *v8::String::Utf8Value(args[2]); | 423 const std::string& view_type = *v8::String::Utf8Value(args[2]); |
| 424 content::RenderThread::Get()->Send( | 424 content::RenderThread::Get()->Send( |
| 425 new GuestViewHostMsg_ViewCreated(view_instance_id, view_type)); | 425 new GuestViewHostMsg_ViewCreated(view_instance_id, view_type)); |
| 426 } | 426 } |
| 427 | 427 |
| 428 void GuestViewInternalCustomBindings::RunWithGesture( | 428 void GuestViewInternalCustomBindings::RunWithGesture( |
| 429 const v8::FunctionCallbackInfo<v8::Value>& args) { | 429 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 430 // Gesture is required to request fullscreen. | 430 // Gesture is required to request fullscreen. |
| 431 blink::WebScopedUserGesture user_gesture; | 431 blink::WebScopedUserGesture user_gesture; |
| 432 CHECK_EQ(args.Length(), 1); | 432 CHECK_EQ(args.Length(), 1); |
| 433 CHECK(args[0]->IsFunction()); | 433 CHECK(args[0]->IsFunction()); |
| 434 v8::Local<v8::Value> no_args; | 434 v8::Local<v8::Value> no_args; |
| 435 context()->CallFunction(v8::Local<v8::Function>::Cast(args[0]), 0, &no_args); | 435 context()->CallFunction(v8::Local<v8::Function>::Cast(args[0]), 0, &no_args); |
| 436 } | 436 } |
| 437 | 437 |
| 438 } // namespace extensions | 438 } // namespace extensions |
| OLD | NEW |