OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/plugins/npapi/plugin_host.h" | 5 #include "webkit/plugins/npapi/plugin_host.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/string_piece.h" | 10 #include "base/string_piece.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "webkit/plugins/npapi/default_plugin_shared.h" | 23 #include "webkit/plugins/npapi/default_plugin_shared.h" |
24 #include "webkit/plugins/npapi/npapi_extension_thunk.h" | 24 #include "webkit/plugins/npapi/npapi_extension_thunk.h" |
25 #include "webkit/plugins/npapi/plugin_instance.h" | 25 #include "webkit/plugins/npapi/plugin_instance.h" |
26 #include "webkit/plugins/npapi/plugin_lib.h" | 26 #include "webkit/plugins/npapi/plugin_lib.h" |
27 #include "webkit/plugins/npapi/plugin_list.h" | 27 #include "webkit/plugins/npapi/plugin_list.h" |
28 #include "webkit/plugins/npapi/plugin_stream_url.h" | 28 #include "webkit/plugins/npapi/plugin_stream_url.h" |
29 #include "webkit/plugins/npapi/webplugin_delegate.h" | 29 #include "webkit/plugins/npapi/webplugin_delegate.h" |
30 #include "webkit/plugins/npapi/webplugininfo.h" | 30 #include "webkit/plugins/npapi/webplugininfo.h" |
31 | 31 |
32 #if defined(OS_MACOSX) | 32 #if defined(OS_MACOSX) |
33 #include "base/sys_info.h" | 33 #include "base/mac/mac_util.h" |
34 #endif | 34 #endif |
35 | 35 |
36 using WebKit::WebBindings; | 36 using WebKit::WebBindings; |
37 | 37 |
38 // Declarations for stub implementations of deprecated functions, which are no | 38 // Declarations for stub implementations of deprecated functions, which are no |
39 // longer listed in npapi.h. | 39 // longer listed in npapi.h. |
40 extern "C" { | 40 extern "C" { |
41 void* NPN_GetJavaEnv(); | 41 void* NPN_GetJavaEnv(); |
42 void* NPN_GetJavaPeer(NPP); | 42 void* NPN_GetJavaPeer(NPP); |
43 } | 43 } |
44 | 44 |
45 namespace webkit { | 45 namespace webkit { |
46 namespace npapi { | 46 namespace npapi { |
47 | 47 |
48 // Finds a PluginInstance from an NPP. | 48 // Finds a PluginInstance from an NPP. |
49 // The caller must take a reference if needed. | 49 // The caller must take a reference if needed. |
50 static PluginInstance* FindInstance(NPP id) { | 50 static PluginInstance* FindInstance(NPP id) { |
51 if (id == NULL) { | 51 if (id == NULL) { |
52 return NULL; | 52 return NULL; |
53 } | 53 } |
54 return reinterpret_cast<PluginInstance*>(id->ndata); | 54 return reinterpret_cast<PluginInstance*>(id->ndata); |
55 } | 55 } |
56 | 56 |
57 #if defined(OS_MACOSX) | 57 #if defined(OS_MACOSX) |
58 // Returns true if the OS supports shared accelerated surfaces via IOSurface. | 58 // Returns true if the OS supports shared accelerated surfaces via IOSurface. |
59 // This is true on Snow Leopard and higher. | 59 // This is true on Snow Leopard and higher. |
60 static bool SupportsSharingAcceleratedSurfaces() { | 60 static bool SupportsSharingAcceleratedSurfaces() { |
61 int32 major, minor, bugfix; | 61 if (!base::mac::IsOSSnowLeopardOrLater()) |
62 base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &bugfix); | |
63 bool isSnowLeopardOrLater = major > 10 || (major == 10 && minor > 5); | |
64 if (!isSnowLeopardOrLater) | |
65 return false; | 62 return false; |
66 // We also need to be running with desktop GL and not the software | 63 // We also need to be running with desktop GL and not the software |
67 // OSMesa renderer in order to share accelerated surfaces between | 64 // OSMesa renderer in order to share accelerated surfaces between |
68 // processes. | 65 // processes. |
69 gfx::GLImplementation implementation = gfx::GetGLImplementation(); | 66 gfx::GLImplementation implementation = gfx::GetGLImplementation(); |
70 if (implementation == gfx::kGLImplementationNone) { | 67 if (implementation == gfx::kGLImplementationNone) { |
71 // Not initialized yet. | 68 // Not initialized yet. |
72 if (!gfx::GLSurface::InitializeOneOff()) { | 69 if (!gfx::GLSurface::InitializeOneOff()) { |
73 return false; | 70 return false; |
74 } | 71 } |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 // support it. | 861 // support it. |
865 NPBool* supports_model = reinterpret_cast<NPBool*>(value); | 862 NPBool* supports_model = reinterpret_cast<NPBool*>(value); |
866 *supports_model = false; | 863 *supports_model = false; |
867 rv = NPERR_NO_ERROR; | 864 rv = NPERR_NO_ERROR; |
868 break; | 865 break; |
869 } | 866 } |
870 case NPNVsupportsUpdatedCocoaTextInputBool: { | 867 case NPNVsupportsUpdatedCocoaTextInputBool: { |
871 // We support the clarifications to the Cocoa IME event spec, but since | 868 // We support the clarifications to the Cocoa IME event spec, but since |
872 // IME currently only works on 10.6, only answer true there. | 869 // IME currently only works on 10.6, only answer true there. |
873 NPBool* supports_update = reinterpret_cast<NPBool*>(value); | 870 NPBool* supports_update = reinterpret_cast<NPBool*>(value); |
874 int32 major, minor, bugfix; | 871 *supports_update = base::mac::IsOSSnowLeopardOrLater(); |
875 base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &bugfix); | |
876 *supports_update = major > 10 || (major == 10 && minor > 5); | |
877 rv = NPERR_NO_ERROR; | 872 rv = NPERR_NO_ERROR; |
878 break; | 873 break; |
879 } | 874 } |
880 #endif // OS_MACOSX | 875 #endif // OS_MACOSX |
881 case NPNVPepperExtensions: | 876 case NPNVPepperExtensions: |
882 // Available for any plugin that attempts to get it. | 877 // Available for any plugin that attempts to get it. |
883 // If the plugin is not started in a Pepper implementation, it | 878 // If the plugin is not started in a Pepper implementation, it |
884 // will likely fail when it tries to use any of the functions | 879 // will likely fail when it tries to use any of the functions |
885 // attached to the extension vector. | 880 // attached to the extension vector. |
886 rv = webkit::npapi::GetPepperExtensionsFunctions(value); | 881 rv = webkit::npapi::GetPepperExtensionsFunctions(value); |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1163 } | 1158 } |
1164 | 1159 |
1165 void NPN_URLRedirectResponse(NPP instance, void* notify_data, NPBool allow) { | 1160 void NPN_URLRedirectResponse(NPP instance, void* notify_data, NPBool allow) { |
1166 scoped_refptr<PluginInstance> plugin(FindInstance(instance)); | 1161 scoped_refptr<PluginInstance> plugin(FindInstance(instance)); |
1167 if (plugin.get()) { | 1162 if (plugin.get()) { |
1168 plugin->URLRedirectResponse(!!allow, notify_data); | 1163 plugin->URLRedirectResponse(!!allow, notify_data); |
1169 } | 1164 } |
1170 } | 1165 } |
1171 | 1166 |
1172 } // extern "C" | 1167 } // extern "C" |
OLD | NEW |