Changeset 233983 in webkit
- Timestamp:
- Jul 19, 2018 7:39:50 AM (6 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r233945 r233983 1 2018-07-19 Youenn Fablet <youenn@apple.com> 2 3 Ensure experimentalPlugInSandboxProfilesEnabled is set on PluginProcess 4 https://bugs.webkit.org/show_bug.cgi?id=187729 5 6 Reviewed by Ryosuke Niwa. 7 8 experimentalPlugInSandboxProfilesEnabled flag is used at initialization of the plugin process sandbox. 9 This flag value should be set according to the value of this flag in the UIProcess. 10 We set this value in the plugin process manager. 11 At launch of the plugin process, this flag will also be passed to it so that it is set properly. 12 13 * PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm: 14 (WebKit::PluginServiceInitializerDelegate::getExtraInitializationData): 15 * PluginProcess/mac/PluginProcessMac.mm: 16 (WebKit::PluginProcess::platformInitializeProcess): 17 * Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h: 18 * UIProcess/API/C/WKPreferences.cpp: 19 (WKPreferencesSetPluginSandboxProfilesEnabledForAllPlugins): 20 (WKPreferencesGetPluginSandboxProfilesEnabledForAllPlugins): 21 * UIProcess/API/C/WKPreferencesRefPrivate.h: 22 * UIProcess/API/Cocoa/WKPreferences.mm: 23 (-[WKPreferences _setExperimentalPlugInSandboxProfilesEnabled:]): 24 (-[WKPreferences _experimentalPlugInSandboxProfilesEnabled]): 25 * UIProcess/API/Cocoa/WKPreferencesPrivate.h: 26 * UIProcess/Plugins/PluginProcessManager.h: 27 (WebKit::PluginProcessManager::experimentalPlugInSandboxProfilesEnabled const): 28 * UIProcess/Plugins/mac/PluginProcessManagerMac.mm: 29 (WebKit::PluginProcessManager::setExperimentalPlugInSandboxProfilesEnabled): 30 * UIProcess/Plugins/mac/PluginProcessProxyMac.mm: 31 (WebKit::PluginProcessProxy::platformGetLaunchOptions): 32 1 33 2018-07-18 Ricky Mondello <rmondello@apple.com> 2 34 -
trunk/Source/WebKit/PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm
r205420 r233983 56 56 extraInitializationData.add("disable-sandbox", disableSandbox); 57 57 58 String experimentalSandboxPlugIn = xpc_dictionary_get_string(extraDataInitializationDataObject, "experimental-sandbox-plugin"); 59 if (!experimentalSandboxPlugIn.isEmpty()) 60 extraInitializationData.add("experimental-sandbox-plugin"_s, experimentalSandboxPlugIn); 61 58 62 return true; 59 63 } -
trunk/Source/WebKit/PluginProcess/mac/PluginProcessMac.mm
r233672 r233983 41 41 #import <CoreAudio/AudioHardware.h> 42 42 #import <WebCore/LocalizedStrings.h> 43 #import <WebCore/RuntimeEnabledFeatures.h> 43 44 #import <dlfcn.h> 44 45 #import <mach-o/dyld.h> … … 529 530 initializeCocoaOverrides(); 530 531 532 bool experimentalPlugInSandboxProfilesEnabled = parameters.extraInitializationData.get("experimental-sandbox-plugin") == "1"; 533 RuntimeEnabledFeatures::sharedFeatures().setExperimentalPlugInSandboxProfilesEnabled(experimentalPlugInSandboxProfilesEnabled); 534 531 535 // FIXME: It would be better to proxy SetCursor calls over to the UI process instead of 532 536 // allowing plug-ins to change the mouse cursor at any time. -
trunk/Source/WebKit/UIProcess/API/C/WKPreferences.cpp
r233869 r233983 26 26 #include "config.h" 27 27 28 #include "PluginProcessManager.h" 28 29 #include "WKPreferencesRef.h" 29 30 #include "WKPreferencesRefPrivate.h" … … 1154 1155 } 1155 1156 1157 void WKPreferencesSetPluginSandboxProfilesEnabledForAllPlugins(WKPreferencesRef preferencesRef, bool enabled) 1158 { 1159 #if ENABLE(NETSCAPE_PLUGIN_API) && PLATFORM(MAC) 1160 WebKit::PluginProcessManager::singleton().setExperimentalPlugInSandboxProfilesEnabled(enabled); 1161 #endif 1162 toImpl(preferencesRef)->setExperimentalPlugInSandboxProfilesEnabled(enabled); 1163 } 1164 1165 bool WKPreferencesGetPluginSandboxProfilesEnabledForAllPlugins(WKPreferencesRef preferencesRef) 1166 { 1167 return toImpl(preferencesRef)->experimentalPlugInSandboxProfilesEnabled(); 1168 } 1169 1156 1170 void WKPreferencesSetSnapshotAllPlugIns(WKPreferencesRef preferencesRef, bool enabled) 1157 1171 { -
trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h
r233869 r233983 261 261 262 262 // Defaults to false 263 WK_EXPORT void WKPreferencesSetPluginSandboxProfilesEnabledForAllPlugins(WKPreferencesRef preferencesRef, bool enabled); 264 WK_EXPORT bool WKPreferencesGetPluginSandboxProfilesEnabledForAllPlugins(WKPreferencesRef preferencesRef); 265 266 // Defaults to false 263 267 WK_EXPORT void WKPreferencesSetArtificialPluginInitializationDelayEnabled(WKPreferencesRef preferencesRef, bool enabled); 264 268 WK_EXPORT bool WKPreferencesGetArtificialPluginInitializationDelayEnabled(WKPreferencesRef preferencesRef); -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm
r233869 r233983 30 30 31 31 #import "APIArray.h" 32 #import "PluginProcessManager.h" 32 33 #import "WKNSArray.h" 33 34 #import "WebPreferences.h" … … 943 944 } 944 945 946 - (void)_setExperimentalPlugInSandboxProfilesEnabled:(BOOL)enabled 947 { 948 #if ENABLE(NETSCAPE_PLUGIN_API) 949 WebKit::PluginProcessManager::singleton().setExperimentalPlugInSandboxProfilesEnabled(enabled); 950 #endif 951 _preferences->setExperimentalPlugInSandboxProfilesEnabled(enabled); 952 } 953 954 - (BOOL)_experimentalPlugInSandboxProfilesEnabled 955 { 956 return _preferences->experimentalPlugInSandboxProfilesEnabled(); 957 } 958 945 959 - (void)_setCookieEnabled:(BOOL)enabled 946 960 { -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKPreferencesPrivate.h
r233869 r233983 160 160 @property (nonatomic, setter=_setAsynchronousPluginInitializationEnabled:) BOOL _asynchronousPluginInitializationEnabled WK_API_AVAILABLE(macosx(10.13.4)); 161 161 @property (nonatomic, setter=_setArtificialPluginInitializationDelayEnabled:) BOOL _artificialPluginInitializationDelayEnabled WK_API_AVAILABLE(macosx(10.13.4)); 162 @property (nonatomic, setter=_setExperimentalPlugInSandboxProfilesEnabled:) BOOL _experimentalPlugInSandboxProfilesEnabled WK_API_AVAILABLE(macosx(WK_MAC_TBA)); 162 163 @property (nonatomic, setter=_setCookieEnabled:) BOOL _cookieEnabled WK_API_AVAILABLE(macosx(10.13.4)); 163 164 @property (nonatomic, setter=_setPlugInSnapshottingEnabled:) BOOL _plugInSnapshottingEnabled WK_API_AVAILABLE(macosx(10.13.4)); -
trunk/Source/WebKit/UIProcess/Plugins/PluginProcessManager.h
r232176 r233983 77 77 const Vector<RefPtr<PluginProcessProxy>>& pluginProcesses() const { return m_pluginProcesses; } 78 78 79 #if PLATFORM(MAC) 80 void setExperimentalPlugInSandboxProfilesEnabled(bool); 81 bool experimentalPlugInSandboxProfilesEnabled() const { return m_experimentalPlugInSandboxProfilesEnabled; } 82 #endif 83 79 84 private: 80 85 PluginProcessManager(); … … 90 95 #if PLATFORM(COCOA) 91 96 ProcessSuppressionDisabledCounter m_processSuppressionDisabledForPageCounter; 97 #endif 98 #if PLATFORM(MAC) 99 bool m_experimentalPlugInSandboxProfilesEnabled { false }; 92 100 #endif 93 101 }; -
trunk/Source/WebKit/UIProcess/Plugins/mac/PluginProcessManagerMac.mm
r197360 r233983 30 30 31 31 #import "PluginProcessProxy.h" 32 #import <WebCore/RuntimeEnabledFeatures.h> 32 33 33 34 namespace WebKit { … … 48 49 } 49 50 51 void PluginProcessManager::setExperimentalPlugInSandboxProfilesEnabled(bool enabled) 52 { 53 m_experimentalPlugInSandboxProfilesEnabled = enabled; 54 WebCore::RuntimeEnabledFeatures::sharedFeatures().setExperimentalPlugInSandboxProfilesEnabled(enabled); 55 } 56 50 57 } // namespace WebKit 51 58 -
trunk/Source/WebKit/UIProcess/Plugins/mac/PluginProcessProxyMac.mm
r231980 r233983 30 30 31 31 #import "PluginProcessCreationParameters.h" 32 #import "PluginProcessManager.h" 32 33 #import "PluginProcessMessages.h" 33 34 #import "SandboxUtilities.h" … … 69 70 launchOptions.extraInitializationData.add("plugin-path", pluginProcessAttributes.moduleInfo.path); 70 71 72 if (PluginProcessManager::singleton().experimentalPlugInSandboxProfilesEnabled()) 73 launchOptions.extraInitializationData.add("experimental-sandbox-plugin", "1"); 74 71 75 if (pluginProcessAttributes.sandboxPolicy == PluginProcessSandboxPolicyUnsandboxed) { 72 76 if (!currentProcessIsSandboxed())
Note: See TracChangeset
for help on using the changeset viewer.