Changeset 295530 in webkit
- Timestamp:
- Jun 14, 2022 11:06:06 AM (2 years ago)
- Location:
- trunk/Source
- Files:
-
- 12 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WTF/wtf/PlatformHave.h
r295528 r295530 1257 1257 #define HAVE_APPLE_PUSH_SERVICE_URL_TOKEN_SUPPORT 1 1258 1258 #endif 1259 1260 #if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 130000) 1261 #define HAVE_POWERLOG_TASK_MODE_QUERY 1 1262 #endif -
trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj
r295522 r295530 438 438 DD20DE6527BC90F90093D175 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C09D0571E31C57E00725F18 /* config.h */; }; 439 439 DDB04F32278E4F1B008D3678 /* libWebKitAdditions.a in Product Dependencies */ = {isa = PBXBuildFile; fileRef = DDE99300278D07B800F60D26 /* libWebKitAdditions.a */; }; 440 E34F26F62846D0D90076E549 /* PowerLogSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = E34F26F52846B7550076E549 /* PowerLogSPI.h */; settings = {ATTRIBUTES = (Private, ); }; }; 440 441 F44291641FA52670002CC93E /* FileSizeFormatter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F44291621FA52670002CC93E /* FileSizeFormatter.cpp */; }; 441 442 F44291681FA52705002CC93E /* FileSizeFormatterCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = F44291661FA52705002CC93E /* FileSizeFormatterCocoa.mm */; }; … … 949 950 DF83E208263734F1000825EF /* CryptoKitPrivateSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoKitPrivateSPI.h; sourceTree = "<group>"; }; 950 951 E327C0DE260BDC90002281C5 /* NotifySPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NotifySPI.h; sourceTree = "<group>"; }; 952 E34F26F52846B7550076E549 /* PowerLogSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PowerLogSPI.h; sourceTree = "<group>"; }; 951 953 E5D45D112106A07400D2B738 /* NSColorWellSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSColorWellSPI.h; sourceTree = "<group>"; }; 952 954 E5D45D132106A18700D2B738 /* NSPopoverColorWellSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSPopoverColorWellSPI.h; sourceTree = "<group>"; }; … … 1164 1166 71B1141F26823ACD004D6701 /* SystemPreviewSPI.h */, 1165 1167 0C7785881F45130F00F4EBB6 /* TelephonyUtilitiesSPI.h */, 1168 E34F26F52846B7550076E549 /* PowerLogSPI.h */, 1166 1169 ); 1167 1170 path = mac; … … 1801 1804 DD20DE3F27BC90D80093D175 /* QuickLookMacSPI.h in Headers */, 1802 1805 DD20DDC127BC90D70093D175 /* QuickLookSoftLink.h in Headers */, 1806 E34F26F62846D0D90076E549 /* PowerLogSPI.h in Headers */, 1803 1807 DD20DE1827BC90D80093D175 /* QuickLookSPI.h in Headers */, 1804 1808 DD20DDC727BC90D70093D175 /* QuickLookUISoftLink.h in Headers */, -
trunk/Source/WebCore/PAL/pal/spi/mac/PowerLogSPI.h
r295528 r295530 1 1 /* 2 * Copyright (C) 202 1Apple Inc. All rights reserved.2 * Copyright (C) 2022 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #include "config.h" 27 #include "GPUProcessProxy.h" 26 #pragma once 28 27 29 #if ENABLE(GPU_PROCESS)28 #if USE(APPLE_INTERNAL_SDK) 30 29 31 #include "GPUProcessCreationParameters.h"32 #include "MediaPermissionUtilities.h"30 #include <PowerLog/PLClientLogging.h> 31 #include <PowerLog/PLXPCClientHeader.h> 33 32 34 namespace WebKit { 33 #else // USE(APPLE_INTERNAL_SDK) 35 34 36 void GPUProcessProxy::platformInitializeGPUProcessParameters(GPUProcessCreationParameters& parameters)35 typedef CF_ENUM(short, PLClientID) 37 36 { 38 parameters.mobileGestaltExtensionHandle = createMobileGestaltSandboxExtensionIfNeeded(); 39 parameters.applicationVisibleName = applicationVisibleName(); 40 } 37 PLClientIDWebKit = 132 38 }; 41 39 42 } 40 WTF_EXTERN_C_BEGIN 41 42 CFDictionaryRef PLQueryRegistered(PLClientID, CFStringRef queryName, CFDictionaryRef parameters); 43 44 WTF_EXTERN_C_END 43 45 44 46 #endif 47 48 extern NSString *const kPLTaskingStartNotification; -
trunk/Source/WebKit/Configurations/WebKit.xcconfig
r295432 r295530 174 174 WK_INSTALL_COORDINATION_LDFLAGS_iphonesimulator = $(WK_INSTALL_COORDINATION_LDFLAGS_iphoneos) 175 175 176 FRAMEWORK_AND_LIBRARY_LDFLAGS = -lobjc -framework CFNetwork -framework CoreAudio -framework CoreFoundation -framework CoreGraphics -framework CoreText -framework Foundation -framework ImageIO -framework IOKit -framework IOSurface -framework WebKitLegacy -lnetwork -framework Metal $(WK_ACCESSIBILITY_LDFLAGS) $(WK_APPKIT_LDFLAGS) $(WK_APPLE_PUSH_SERVICE_LDFLAGS) $(WK_BACKBOARD_SERVICES_LDFLAGS) $(WK_RUNNINGBOARD_SERVICES_LDFLAGS) $(WK_AUTHKIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CONTACTS_LDFLAGS) $(WK_CORE_PREDICTION_LDFLAGS) $(WK_CORE_SERVICES_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_LIBNETWORKEXTENSION_LDFLAGS) $(WK_LIBSANDBOX_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_PDFKIT_LDFLAGS) $(WK_PROTOTYPE_TOOLS_LDFLAGS) $(WK_SAFE_BROWSING_LDFLAGS) $(WK_SECURITY_INTERFACE_LDFLAGS) $(WK_UIKIT_LDFLAGS) $(WK_UNIFORM_TYPE_IDENTIFIERS_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS) $(WK_WEBINSPECTORUI_LDFLAGS) $(WK_COORDINATOR_LDFLAGS) $(WK_INSTALL_COORDINATION_LDFLAGS) $(WK_APP_STORE_DAEMON_LDFLAGS); 176 WK_POWERLOG_LDFLAGS = $(WK_POWERLOG_LDFLAGS_$(WK_PLATFORM_NAME)); 177 WK_POWERLOG_LDFLAGS_macosx = -weak_framework PowerLog -weak_framework PowerlogCore; 178 179 FRAMEWORK_AND_LIBRARY_LDFLAGS = -lobjc -framework CFNetwork -framework CoreAudio -framework CoreFoundation -framework CoreGraphics -framework CoreText -framework Foundation -framework ImageIO -framework IOKit -framework IOSurface -framework WebKitLegacy -lnetwork -framework Metal $(WK_ACCESSIBILITY_LDFLAGS) $(WK_APPKIT_LDFLAGS) $(WK_APPLE_PUSH_SERVICE_LDFLAGS) $(WK_BACKBOARD_SERVICES_LDFLAGS) $(WK_RUNNINGBOARD_SERVICES_LDFLAGS) $(WK_AUTHKIT_LDFLAGS) $(WK_CARBON_LDFLAGS) $(WK_CONTACTS_LDFLAGS) $(WK_CORE_PREDICTION_LDFLAGS) $(WK_CORE_SERVICES_LDFLAGS) $(WK_GRAPHICS_SERVICES_LDFLAGS) $(WK_LIBNETWORKEXTENSION_LDFLAGS) $(WK_LIBSANDBOX_LDFLAGS) $(WK_LIBWEBRTC_LDFLAGS) $(WK_MOBILE_CORE_SERVICES_LDFLAGS) $(WK_MOBILE_GESTALT_LDFLAGS) $(WK_PDFKIT_LDFLAGS) $(WK_PROTOTYPE_TOOLS_LDFLAGS) $(WK_SAFE_BROWSING_LDFLAGS) $(WK_SECURITY_INTERFACE_LDFLAGS) $(WK_UIKIT_LDFLAGS) $(WK_UNIFORM_TYPE_IDENTIFIERS_LDFLAGS) $(WK_URL_FORMATTING_LDFLAGS) $(WK_WEBINSPECTORUI_LDFLAGS) $(WK_COORDINATOR_LDFLAGS) $(WK_INSTALL_COORDINATION_LDFLAGS) $(WK_APP_STORE_DAEMON_LDFLAGS) $(WK_POWERLOG_LDFLAGS); 177 180 178 181 // Prevent C++ standard library basic_stringstream, operator new, delete and their related exception types from being exported as weak symbols. -
trunk/Source/WebKit/GPUProcess/GPUProcess.h
r294802 r295530 202 202 #endif 203 203 204 #if HAVE(POWERLOG_TASK_MODE_QUERY) 205 void enablePowerLogging(SandboxExtension::Handle&&); 206 #endif 207 204 208 // Connections to WebProcesses. 205 209 HashMap<WebCore::ProcessIdentifier, Ref<GPUConnectionToWebProcess>> m_webProcessConnections; -
trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in
r294802 r295530 92 92 #endif 93 93 94 #if HAVE(POWERLOG_TASK_MODE_QUERY) 95 EnablePowerLogging(WebKit::SandboxExtension::Handle handle) 96 #endif 97 94 98 WebProcessConnectionCountForTesting() -> (uint64_t count) 95 99 } -
trunk/Source/WebKit/GPUProcess/mac/GPUProcessMac.mm
r293509 r295530 106 106 #endif 107 107 108 #if HAVE(POWERLOG_TASK_MODE_QUERY) 109 void GPUProcess::enablePowerLogging(SandboxExtension::Handle&& handle) 110 { 111 SandboxExtension::consumePermanently(WTFMove(handle)); 112 } 113 #endif // HAVE(POWERLOG_TASK_MODE_QUERY) 114 108 115 } // namespace WebKit 109 116 -
trunk/Source/WebKit/GPUProcess/mac/com.apple.WebKit.GPUProcess.sb.in
r294969 r295530 653 653 654 654 (allow mach-lookup 655 (global-name "com.apple.powerlog.plxpclogger.xpc")) 655 (require-all 656 (extension "com.apple.webkit.extension.mach") 657 (global-name "com.apple.powerlog.plxpclogger.xpc"))) 656 658 657 659 (with-filter (uid 0) -
trunk/Source/WebKit/UIProcess/Cocoa/GPUProcessProxyCocoa.mm
r295087 r295530 30 30 31 31 #include "GPUProcessCreationParameters.h" 32 #include "GPUProcessMessages.h" 32 33 #include "MediaPermissionUtilities.h" 34 35 #if HAVE(POWERLOG_TASK_MODE_QUERY) 36 #include <pal/spi/mac/PowerLogSPI.h> 37 #endif 33 38 34 39 namespace WebKit { … … 40 45 } 41 46 47 #if HAVE(POWERLOG_TASK_MODE_QUERY) 48 bool GPUProcessProxy::isPowerLoggingInTaskMode() 49 { 50 PLClientID clientIDWebKit = static_cast<PLClientID>(132); // FIXME: Replace with PLClientIDWebKit when available in SDK 51 auto dictionary = adoptCF(PLQueryRegistered(clientIDWebKit, CFSTR("TaskModeQuery"), nullptr)); 52 if (!dictionary) 53 return false; 54 CFNumberRef taskModeRef = static_cast<CFNumberRef>(CFDictionaryGetValue(dictionary.get(), CFSTR("Task Mode"))); 55 if (!taskModeRef) 56 return false; 57 int taskMode = 0; 58 if (!CFNumberGetValue(taskModeRef, kCFNumberIntType, &taskMode)) 59 return false; 60 return !!taskMode; 61 } 62 63 void GPUProcessProxy::enablePowerLogging() 64 { 65 auto handle = SandboxExtension::createHandleForMachLookup("com.apple.powerlog.plxpclogger.xpc"_s, std::nullopt); 66 if (!handle) 67 return; 68 send(Messages::GPUProcess::EnablePowerLogging(*handle), 0); 69 } 70 #endif // HAVE(POWERLOG_TASK_MODE_QUERY) 71 42 72 } 43 73 -
trunk/Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm
r295493 r295530 96 96 #endif 97 97 98 #if HAVE(POWERLOG_TASK_MODE_QUERY) 99 #import <pal/spi/mac/PowerLogSPI.h> 100 #endif 101 98 102 #if PLATFORM(IOS_FAMILY) 99 103 #import <pal/spi/ios/MobileGestaltSPI.h> … … 704 708 addCFNotificationObserver(mediaAccessibilityPreferencesChangedCallback, kMAXCaptionAppearanceSettingsChangedNotification); 705 709 #endif 710 #if HAVE(POWERLOG_TASK_MODE_QUERY) && ENABLE(GPU_PROCESS) 711 m_powerLogObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kPLTaskingStartNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { 712 if (auto* gpuProcess = GPUProcessProxy::singletonIfCreated()) 713 gpuProcess->enablePowerLogging(); 714 }]; 715 #endif // HAVE(POWERLOG_TASK_MODE_QUERY) && ENABLE(GPU_PROCESS) 706 716 } 707 717 … … 754 764 removeCFNotificationObserver(kMAXCaptionAppearanceSettingsChangedNotification); 755 765 #endif 756 766 #if HAVE(POWERLOG_TASK_MODE_QUERY) && ENABLE(GPU_PROCESS) 767 [[NSNotificationCenter defaultCenter] removeObserver:m_powerLogObserver.get()]; 768 #endif 757 769 m_weakObserver = nil; 758 770 } -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
r294802 r295530 63 63 #endif 64 64 65 #if PLATFORM(COCOA) 66 #include <wtf/BlockPtr.h> 67 #endif 68 65 69 #define MESSAGE_CHECK(assertion) MESSAGE_CHECK_BASE(assertion, this->connection()) 66 70 … … 471 475 for (auto& processPool : WebProcessPool::allProcessPools()) 472 476 processPool->gpuProcessDidFinishLaunching(processIdentifier()); 477 478 #if HAVE(POWERLOG_TASK_MODE_QUERY) 479 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), makeBlockPtr([weakThis = WeakPtr { *this }] () mutable { 480 if (!isPowerLoggingInTaskMode()) 481 return; 482 RunLoop::main().dispatch([weakThis = WTFMove(weakThis)] () { 483 if (!weakThis) 484 return; 485 weakThis->enablePowerLogging(); 486 }); 487 }).get()); 488 #endif 473 489 } 474 490 -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
r294802 r295530 103 103 #endif 104 104 105 #if HAVE(POWERLOG_TASK_MODE_QUERY) 106 void enablePowerLogging(); 107 static bool isPowerLoggingInTaskMode(); 108 #endif 109 105 110 void updatePreferences(WebProcessProxy&); 106 111 void updateScreenPropertiesIfNeeded(); -
trunk/Source/WebKit/UIProcess/WebProcessPool.h
r295493 r295530 690 690 #endif 691 691 692 #if HAVE(POWERLOG_TASK_MODE_QUERY) && ENABLE(GPU_PROCESS) 693 RetainPtr<NSObject> m_powerLogObserver; 694 #endif 695 692 696 #if PLATFORM(COCOA) 693 697 std::unique_ptr<WebCore::PowerSourceNotifier> m_powerSourceNotifier;
Note: See TracChangeset
for help on using the changeset viewer.