| 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/pepper_plugin_delegate_impl.h" | 5 #include "content/renderer/pepper_plugin_delegate_impl.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <queue> | 8 #include <queue> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 802 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 813 } | 813 } |
| 814 } | 814 } |
| 815 pending_connects_.clear(); | 815 pending_connects_.clear(); |
| 816 } | 816 } |
| 817 | 817 |
| 818 void PpapiBrokerImpl::ConnectPluginToBroker( | 818 void PpapiBrokerImpl::ConnectPluginToBroker( |
| 819 webkit::ppapi::PPB_Broker_Impl* client) { | 819 webkit::ppapi::PPB_Broker_Impl* client) { |
| 820 base::SyncSocket::Handle plugin_handle = base::kInvalidPlatformFileValue; | 820 base::SyncSocket::Handle plugin_handle = base::kInvalidPlatformFileValue; |
| 821 int32_t result = PP_OK; | 821 int32_t result = PP_OK; |
| 822 | 822 |
| 823 base::SyncSocket* sockets[2] = {0}; | 823 // The socket objects will be deleted when this function exits, closing the |
| 824 if (base::SyncSocket::CreatePair(sockets)) { | 824 // handles. Any uses of the socket must duplicate them. |
| 825 // The socket objects will be deleted when this function exits, closing the | 825 scoped_ptr<base::SyncSocket> broker_socket(new base::SyncSocket()); |
| 826 // handles. Any uses of the socket must duplicate them. | 826 scoped_ptr<base::SyncSocket> plugin_socket(new base::SyncSocket()); |
| 827 scoped_ptr<base::SyncSocket> broker_socket(sockets[0]); | 827 if (base::SyncSocket::CreatePair(broker_socket.get(), plugin_socket.get())) { |
| 828 scoped_ptr<base::SyncSocket> plugin_socket(sockets[1]); | |
| 829 | |
| 830 result = dispatcher_->SendHandleToBroker(client->pp_instance(), | 828 result = dispatcher_->SendHandleToBroker(client->pp_instance(), |
| 831 broker_socket->handle()); | 829 broker_socket->handle()); |
| 832 | 830 |
| 833 // If the broker has its pipe handle, duplicate the plugin's handle. | 831 // If the broker has its pipe handle, duplicate the plugin's handle. |
| 834 // Otherwise, the plugin's handle will be automatically closed. | 832 // Otherwise, the plugin's handle will be automatically closed. |
| 835 if (result == PP_OK) | 833 if (result == PP_OK) |
| 836 plugin_handle = DuplicateHandle(plugin_socket->handle()); | 834 plugin_handle = DuplicateHandle(plugin_socket->handle()); |
| 837 } else { | 835 } else { |
| 838 result = PP_ERROR_FAILED; | 836 result = PP_ERROR_FAILED; |
| 839 } | 837 } |
| (...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2165 | 2163 |
| 2166 bool PepperPluginDelegateImpl::CanUseSocketAPIs() { | 2164 bool PepperPluginDelegateImpl::CanUseSocketAPIs() { |
| 2167 WebView* webview = render_view_->webview(); | 2165 WebView* webview = render_view_->webview(); |
| 2168 WebFrame* main_frame = webview ? webview->mainFrame() : NULL; | 2166 WebFrame* main_frame = webview ? webview->mainFrame() : NULL; |
| 2169 GURL url(main_frame ? GURL(main_frame->document().url()) : GURL()); | 2167 GURL url(main_frame ? GURL(main_frame->document().url()) : GURL()); |
| 2170 if (!url.is_valid()) | 2168 if (!url.is_valid()) |
| 2171 return false; | 2169 return false; |
| 2172 | 2170 |
| 2173 return content::GetContentClient()->renderer()->AllowSocketAPI(url); | 2171 return content::GetContentClient()->renderer()->AllowSocketAPI(url); |
| 2174 } | 2172 } |
| OLD | NEW |