OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/renderer/browser_plugin/browser_plugin.h" | 5 #include "content/renderer/browser_plugin/browser_plugin.h" |
6 | 6 |
7 #include "base/json/json_string_value_serializer.h" | 7 #include "base/json/json_string_value_serializer.h" |
8 #include "base/message_loop.h" | 8 #include "base/message_loop.h" |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
848 | 848 |
849 void BrowserPlugin::PersistRequestObject( | 849 void BrowserPlugin::PersistRequestObject( |
850 const NPVariant* request, const std::string& type, int id) { | 850 const NPVariant* request, const std::string& type, int id) { |
851 CHECK(alive_v8_permission_request_objects_.find(id) == | 851 CHECK(alive_v8_permission_request_objects_.find(id) == |
852 alive_v8_permission_request_objects_.end()); | 852 alive_v8_permission_request_objects_.end()); |
853 if (pending_permission_requests_.find(id) == | 853 if (pending_permission_requests_.find(id) == |
854 pending_permission_requests_.end()) { | 854 pending_permission_requests_.end()) { |
855 return; | 855 return; |
856 } | 856 } |
857 | 857 |
| 858 v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
858 v8::Persistent<v8::Value> weak_request = | 859 v8::Persistent<v8::Value> weak_request = |
859 v8::Persistent<v8::Value>::New(WebKit::WebBindings::toV8Value(request)); | 860 v8::Persistent<v8::Value>::New(isolate, |
| 861 WebKit::WebBindings::toV8Value(request)); |
860 | 862 |
861 AliveV8PermissionRequestItem* new_item = | 863 AliveV8PermissionRequestItem* new_item = |
862 new std::pair<int, base::WeakPtr<BrowserPlugin> >( | 864 new std::pair<int, base::WeakPtr<BrowserPlugin> >( |
863 id, weak_ptr_factory_.GetWeakPtr()); | 865 id, weak_ptr_factory_.GetWeakPtr()); |
864 | 866 |
865 std::pair<std::map<int, AliveV8PermissionRequestItem*>::iterator, bool> | 867 std::pair<std::map<int, AliveV8PermissionRequestItem*>::iterator, bool> |
866 result = alive_v8_permission_request_objects_.insert( | 868 result = alive_v8_permission_request_objects_.insert( |
867 std::make_pair(id, new_item)); | 869 std::make_pair(id, new_item)); |
868 CHECK(result.second); // Inserted in the map. | 870 CHECK(result.second); // Inserted in the map. |
869 AliveV8PermissionRequestItem* request_item = result.first->second; | 871 AliveV8PermissionRequestItem* request_item = result.first->second; |
870 weak_request.MakeWeak(request_item, WeakCallbackForPersistObject); | 872 weak_request.MakeWeak(isolate, request_item, WeakCallbackForPersistObject); |
871 } | 873 } |
872 | 874 |
873 // static | 875 // static |
874 void BrowserPlugin::WeakCallbackForPersistObject( | 876 void BrowserPlugin::WeakCallbackForPersistObject( |
875 v8::Persistent<v8::Value> object, void* param) { | 877 v8::Isolate* isolate, v8::Persistent<v8::Value> object, void* param) { |
876 v8::Persistent<v8::Object> persistent_object = | 878 v8::Persistent<v8::Object> persistent_object = |
877 v8::Persistent<v8::Object>::Cast(object); | 879 v8::Persistent<v8::Object>::Cast(object); |
878 | 880 |
879 AliveV8PermissionRequestItem* item_ptr = | 881 AliveV8PermissionRequestItem* item_ptr = |
880 static_cast<AliveV8PermissionRequestItem*>(param); | 882 static_cast<AliveV8PermissionRequestItem*>(param); |
881 int request_id = item_ptr->first; | 883 int request_id = item_ptr->first; |
882 base::WeakPtr<BrowserPlugin> plugin = item_ptr->second; | 884 base::WeakPtr<BrowserPlugin> plugin = item_ptr->second; |
883 delete item_ptr; | 885 delete item_ptr; |
884 | 886 |
885 persistent_object.Dispose(); | 887 persistent_object.Dispose(isolate); |
886 persistent_object.Clear(); | 888 persistent_object.Clear(); |
887 | 889 |
888 if (plugin) { | 890 if (plugin) { |
889 // Asynchronously remove item from |alive_v8_permission_request_objects_|. | 891 // Asynchronously remove item from |alive_v8_permission_request_objects_|. |
890 // Note that we are using weak pointer for the following PostTask, so we | 892 // Note that we are using weak pointer for the following PostTask, so we |
891 // don't need to worry about BrowserPlugin going away. | 893 // don't need to worry about BrowserPlugin going away. |
892 MessageLoop::current()->PostTask( | 894 MessageLoop::current()->PostTask( |
893 FROM_HERE, | 895 FROM_HERE, |
894 base::Bind(&BrowserPlugin::OnRequestObjectGarbageCollected, | 896 base::Bind(&BrowserPlugin::OnRequestObjectGarbageCollected, |
895 plugin, request_id)); | 897 plugin, request_id)); |
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 void* notify_data) { | 1330 void* notify_data) { |
1329 } | 1331 } |
1330 | 1332 |
1331 void BrowserPlugin::didFailLoadingFrameRequest( | 1333 void BrowserPlugin::didFailLoadingFrameRequest( |
1332 const WebKit::WebURL& url, | 1334 const WebKit::WebURL& url, |
1333 void* notify_data, | 1335 void* notify_data, |
1334 const WebKit::WebURLError& error) { | 1336 const WebKit::WebURLError& error) { |
1335 } | 1337 } |
1336 | 1338 |
1337 } // namespace content | 1339 } // namespace content |
OLD | NEW |