Title: [99483] trunk/Source/WebKit2
Revision
99483
Author
a...@apple.com
Date
2011-11-07 14:51:59 -0800 (Mon, 07 Nov 2011)

Log Message

        The Full Keyboard Access preference should be read in the UI process
        https://bugs.webkit.org/show_bug.cgi?id=71734
        <rdar://problem/9237619>

        Reviewed by Darin Adler.

        This is consistent with how other global preferences (like language) are handled, and lets
        us tighten up the sandbox a little.

        * Shared/WebProcessCreationParameters.cpp:
        (WebKit::WebProcessCreationParameters::encode):
        (WebKit::WebProcessCreationParameters::decode):
        * Shared/WebProcessCreationParameters.h:
        Added fullKeyboardAccessEnabled, so that newly started processes have the right preference value.

        * UIProcess/WebContext.h:
        * UIProcess/WebContext.cpp:
        (WebKit::WebContext::fullKeyboardAccessModeChanged): If preference changes while a web process
        is already running, tell it.
        (WebKit::WebContext::ensureWebProcess): Set parameters.fullKeyboardAccessEnabled from current
        preference.

        * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):
        * UIProcess/mac/WebProcessProxyMac.mm: (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):
        * UIProcess/WebProcessProxy.h:
        Proxy it to Objective-C code. WebProcessProxy is as good place to have the static function
        as any. One day, we will make code more consistent with language and other global preferences.

        * UIProcess/mac/WKFullKeyboardAccessWatcher.h: Copied from Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.h.
        * UIProcess/mac/WKFullKeyboardAccessWatcher.mm: Copied from Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.mm.
        * WebProcess/mac/WKFullKeyboardAccessWatcher.h: Removed.
        * WebProcess/mac/WKFullKeyboardAccessWatcher.mm: Removed.
        (-[WKFullKeyboardAccessWatcher retrieveKeyboardUIModeFromPreferences:]): Once retrieved,
        push the preference value.

        * WebKit2.xcodeproj/project.pbxproj: WKFullKeyboardAccessWatcher is now in UI process.

        * WebProcess/WebProcess.h:
        * WebProcess/WebProcess.cpp:
        (WebKit::WebProcess::WebProcess):
        (WebKit::WebProcess::fullKeyboardAccessModeChanged):
        (WebKit::WebProcess::fullKeyboardAccessEnabled):
        * WebProcess/mac/WebProcessMac.mm:
        WebCprocess now holds the preference value in a mamber value, which UI process pushes
        updates to.

        * WebProcess/WebProcess.messages.in: Added a message for changes preference value.

        * WebProcess/com.apple.WebProcess.sb: We no longer need read access to com.apple.universalaccess.plist.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (99482 => 99483)


--- trunk/Source/WebKit2/ChangeLog	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/ChangeLog	2011-11-07 22:51:59 UTC (rev 99483)
@@ -1,3 +1,55 @@
+2011-11-07  Alexey Proskuryakov  <a...@apple.com>
+
+        The Full Keyboard Access preference should be read in the UI process
+        https://bugs.webkit.org/show_bug.cgi?id=71734
+        <rdar://problem/9237619>
+
+        Reviewed by Darin Adler.
+
+        This is consistent with how other global preferences (like language) are handled, and lets
+        us tighten up the sandbox a little.
+
+        * Shared/WebProcessCreationParameters.cpp:
+        (WebKit::WebProcessCreationParameters::encode):
+        (WebKit::WebProcessCreationParameters::decode):
+        * Shared/WebProcessCreationParameters.h:
+        Added fullKeyboardAccessEnabled, so that newly started processes have the right preference value.
+
+        * UIProcess/WebContext.h:
+        * UIProcess/WebContext.cpp:
+        (WebKit::WebContext::fullKeyboardAccessModeChanged): If preference changes while a web process
+        is already running, tell it.
+        (WebKit::WebContext::ensureWebProcess): Set parameters.fullKeyboardAccessEnabled from current
+        preference.
+
+        * UIProcess/WebProcessProxy.cpp: (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):
+        * UIProcess/mac/WebProcessProxyMac.mm: (WebKit::WebProcessProxy::fullKeyboardAccessEnabled):
+        * UIProcess/WebProcessProxy.h:
+        Proxy it to Objective-C code. WebProcessProxy is as good place to have the static function
+        as any. One day, we will make code more consistent with language and other global preferences.
+
+        * UIProcess/mac/WKFullKeyboardAccessWatcher.h: Copied from Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.h.
+        * UIProcess/mac/WKFullKeyboardAccessWatcher.mm: Copied from Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.mm.
+        * WebProcess/mac/WKFullKeyboardAccessWatcher.h: Removed.
+        * WebProcess/mac/WKFullKeyboardAccessWatcher.mm: Removed.
+        (-[WKFullKeyboardAccessWatcher retrieveKeyboardUIModeFromPreferences:]): Once retrieved,
+        push the preference value.
+
+        * WebKit2.xcodeproj/project.pbxproj: WKFullKeyboardAccessWatcher is now in UI process.
+
+        * WebProcess/WebProcess.h:
+        * WebProcess/WebProcess.cpp:
+        (WebKit::WebProcess::WebProcess):
+        (WebKit::WebProcess::fullKeyboardAccessModeChanged):
+        (WebKit::WebProcess::fullKeyboardAccessEnabled):
+        * WebProcess/mac/WebProcessMac.mm:
+        WebCprocess now holds the preference value in a mamber value, which UI process pushes
+        updates to.
+
+        * WebProcess/WebProcess.messages.in: Added a message for changes preference value.
+
+        * WebProcess/com.apple.WebProcess.sb: We no longer need read access to com.apple.universalaccess.plist.
+
 2011-11-07  Anders Carlsson  <ander...@apple.com>
 
         Add TiledCoreAnimationDrawingArea stub classes

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp (99482 => 99483)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.cpp	2011-11-07 22:51:59 UTC (rev 99483)
@@ -69,6 +69,7 @@
 #endif
     encoder->encode(languageCode);
     encoder->encode(textCheckerState);
+    encoder->encode(fullKeyboardAccessEnabled);
     encoder->encode(defaultRequestTimeoutInterval);
 #if USE(CFURLSTORAGESESSIONS)
     encoder->encode(uiProcessBundleIdentifier);
@@ -141,6 +142,8 @@
         return false;
     if (!decoder->decode(parameters.textCheckerState))
         return false;
+    if (!decoder->decode(parameters.fullKeyboardAccessEnabled))
+        return false;
     if (!decoder->decode(parameters.defaultRequestTimeoutInterval))
         return false;
 #if USE(CFURLSTORAGESESSIONS)

Modified: trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h (99482 => 99483)


--- trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/Shared/WebProcessCreationParameters.h	2011-11-07 22:51:59 UTC (rev 99483)
@@ -81,6 +81,8 @@
 
     TextCheckerState textCheckerState;
 
+    bool fullKeyboardAccessEnabled;
+
     double defaultRequestTimeoutInterval;
 
 #if USE(CFURLSTORAGESESSIONS)

Modified: trunk/Source/WebKit2/UIProcess/WebContext.cpp (99482 => 99483)


--- trunk/Source/WebKit2/UIProcess/WebContext.cpp	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/UIProcess/WebContext.cpp	2011-11-07 22:51:59 UTC (rev 99483)
@@ -224,6 +224,11 @@
     sendToAllProcesses(Messages::WebProcess::LanguageChanged(defaultLanguage()));
 }
 
+void WebContext::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
+{
+    sendToAllProcesses(Messages::WebProcess::FullKeyboardAccessModeChanged(fullKeyboardAccessEnabled));
+}
+
 void WebContext::ensureWebProcess()
 {
     if (m_process)
@@ -262,6 +267,8 @@
 
     parameters.textCheckerState = TextChecker::state();
 
+    parameters.fullKeyboardAccessEnabled = WebProcessProxy::fullKeyboardAccessEnabled();
+
     parameters.defaultRequestTimeoutInterval = WebURLRequest::defaultTimeoutInterval();
 
     // Add any platform specific parameters

Modified: trunk/Source/WebKit2/UIProcess/WebContext.h (99482 => 99483)


--- trunk/Source/WebKit2/UIProcess/WebContext.h	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/UIProcess/WebContext.h	2011-11-07 22:51:59 UTC (rev 99483)
@@ -196,6 +196,8 @@
     static bool omitPDFSupport();
 #endif
 
+    void fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled);
+
 private:
     WebContext(ProcessModel, const String& injectedBundlePath);
 

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp (99482 => 99483)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp	2011-11-07 22:51:59 UTC (rev 99483)
@@ -247,6 +247,13 @@
     return false;
 }
 
+#if !PLATFORM(MAC)
+bool WebProcessProxy::fullKeyboardAccessEnabled()
+{
+    return false;
+}
+#endif
+
 void WebProcessProxy::addBackForwardItem(uint64_t itemID, const String& originalURL, const String& url, const String& title, const CoreIPC::DataReference& backForwardData)
 {
     MESSAGE_CHECK_URL(originalURL);

Modified: trunk/Source/WebKit2/UIProcess/WebProcessProxy.h (99482 => 99483)


--- trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/UIProcess/WebProcessProxy.h	2011-11-07 22:51:59 UTC (rev 99483)
@@ -110,6 +110,8 @@
     bool checkURLReceivedFromWebProcess(const String&);
     bool checkURLReceivedFromWebProcess(const WebCore::KURL&);
 
+    static bool fullKeyboardAccessEnabled();
+
     // FIXME: This variant of send is deprecated. All clients should move to an overload that take a message type.
     template<typename E, typename T> bool deprecatedSend(E messageID, uint64_t destinationID, const T& arguments);
 

Copied: trunk/Source/WebKit2/UIProcess/mac/WKFullKeyboardAccessWatcher.h (from rev 99432, trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.h) (0 => 99483)


--- trunk/Source/WebKit2/UIProcess/mac/WKFullKeyboardAccessWatcher.h	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/mac/WKFullKeyboardAccessWatcher.h	2011-11-07 22:51:59 UTC (rev 99483)
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WKFullKeyboardAccessWatcher_h
+#define WKFullKeyboardAccessWatcher_h
+
+#import <Cocoa/Cocoa.h>
+
+@interface WKFullKeyboardAccessWatcher : NSObject {
+@private
+    BOOL fullKeyboardAccessEnabled;
+}
+
++ (BOOL)fullKeyboardAccessEnabled;
+
+@end;
+
+#endif // WKFullKeyboardAccessWatcher_h

Copied: trunk/Source/WebKit2/UIProcess/mac/WKFullKeyboardAccessWatcher.mm (from rev 99432, trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.mm) (0 => 99483)


--- trunk/Source/WebKit2/UIProcess/mac/WKFullKeyboardAccessWatcher.mm	                        (rev 0)
+++ trunk/Source/WebKit2/UIProcess/mac/WKFullKeyboardAccessWatcher.mm	2011-11-07 22:51:59 UTC (rev 99483)
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import "config.h"
+#import "WKFullKeyboardAccessWatcher.h"
+
+#import "WebContext.h"
+
+NSString * const KeyboardUIModeDidChangeNotification = @"com.apple.KeyboardUIModeDidChange";
+const CFStringRef AppleKeyboardUIMode = CFSTR("AppleKeyboardUIMode");
+const CFStringRef UniversalAccessDomain = CFSTR("com.apple.universalaccess");
+
+using namespace WebKit;
+
+@implementation WKFullKeyboardAccessWatcher
+
+- (void)notifyAllWebContexts
+{
+    const Vector<WebContext*>& contexts = WebContext::allContexts();
+    for (size_t i = 0; i < contexts.size(); ++i)
+        contexts[i]->fullKeyboardAccessModeChanged(fullKeyboardAccessEnabled);
+}
+
+- (void)retrieveKeyboardUIModeFromPreferences:(NSNotification *)notification
+{
+    BOOL oldValue = fullKeyboardAccessEnabled;
+
+    CFPreferencesAppSynchronize(UniversalAccessDomain);
+
+    Boolean keyExistsAndHasValidFormat;
+    int mode = CFPreferencesGetAppIntegerValue(AppleKeyboardUIMode, UniversalAccessDomain, &keyExistsAndHasValidFormat);
+    if (keyExistsAndHasValidFormat) {
+        // The keyboard access mode is reported by two bits:
+        // Bit 0 is set if feature is on
+        // Bit 1 is set if full keyboard access works for any control, not just text boxes and lists.
+        fullKeyboardAccessEnabled = (mode & 0x2);
+    }
+
+    if (fullKeyboardAccessEnabled != oldValue)
+        [self notifyAllWebContexts];
+}
+
+- (id)init
+{
+    self = [super init];
+    if (!self)
+        return nil;
+
+    [self retrieveKeyboardUIModeFromPreferences:nil];
+
+    [[NSDistributedNotificationCenter defaultCenter] 
+        addObserver:self selector:@selector(retrieveKeyboardUIModeFromPreferences:) 
+        name:KeyboardUIModeDidChangeNotification object:nil];
+
+    return self;
+}
+
++ (BOOL)fullKeyboardAccessEnabled
+{
+    static WKFullKeyboardAccessWatcher *watcher = [[WKFullKeyboardAccessWatcher alloc] init];
+    return watcher->fullKeyboardAccessEnabled;
+}
+
+@end

Modified: trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm (99482 => 99483)


--- trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/UIProcess/mac/WebProcessProxyMac.mm	2011-11-07 22:51:59 UTC (rev 99483)
@@ -30,6 +30,7 @@
 #import "SecItemResponseData.h"
 #import "SecKeychainItemRequestData.h"
 #import "SecKeychainItemResponseData.h"
+#import "WKFullKeyboardAccessWatcher.h"
 #import <Security/SecItem.h>
 
 namespace WebKit {
@@ -107,4 +108,9 @@
     response = resultCode;
 }
 
+bool WebProcessProxy::fullKeyboardAccessEnabled()
+{
+    return [WKFullKeyboardAccessWatcher fullKeyboardAccessEnabled];
+}
+
 } // namespace WebKit

Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (99482 => 99483)


--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj	2011-11-07 22:51:59 UTC (rev 99483)
@@ -842,8 +842,8 @@
 		E199875E142C045400BB2DE7 /* BuiltInPDFView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E199875C142BFC9700BB2DE7 /* BuiltInPDFView.cpp */; };
 		E1A31732134CEA6C007C9A4F /* AttributedString.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A31731134CEA6C007C9A4F /* AttributedString.h */; };
 		E1A31735134CEA80007C9A4F /* AttributedString.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1A31734134CEA80007C9A4F /* AttributedString.mm */; };
-		E1BB16A413201B9B00F49431 /* WKFullKeyboardAccessWatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E1BB1688132018BA00F49431 /* WKFullKeyboardAccessWatcher.h */; };
-		E1BB16A513201B9B00F49431 /* WKFullKeyboardAccessWatcher.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1BB1689132018BA00F49431 /* WKFullKeyboardAccessWatcher.mm */; };
+		E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = E1AEA22D14687BDB00804569 /* WKFullKeyboardAccessWatcher.h */; };
+		E1AEA23014687BDB00804569 /* WKFullKeyboardAccessWatcher.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1AEA22E14687BDB00804569 /* WKFullKeyboardAccessWatcher.mm */; };
 		E1CC1B9012D7EADF00625838 /* PrintInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CC1B8E12D7EADF00625838 /* PrintInfo.h */; };
 		E1CC1B9112D7EADF00625838 /* PrintInfoMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1CC1B8F12D7EADF00625838 /* PrintInfoMac.mm */; };
 		E1EE53E311F8CFC000CCBEE4 /* InjectedBundlePageEditorClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E1EE53DC11F8CF9F00CCBEE4 /* InjectedBundlePageEditorClient.h */; };
@@ -1835,8 +1835,8 @@
 		E199875C142BFC9700BB2DE7 /* BuiltInPDFView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BuiltInPDFView.cpp; path = PDF/BuiltInPDFView.cpp; sourceTree = "<group>"; };
 		E1A31731134CEA6C007C9A4F /* AttributedString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttributedString.h; sourceTree = "<group>"; };
 		E1A31734134CEA80007C9A4F /* AttributedString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AttributedString.mm; sourceTree = "<group>"; };
-		E1BB1688132018BA00F49431 /* WKFullKeyboardAccessWatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFullKeyboardAccessWatcher.h; sourceTree = "<group>"; };
-		E1BB1689132018BA00F49431 /* WKFullKeyboardAccessWatcher.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = WKFullKeyboardAccessWatcher.mm; sourceTree = "<group>"; };
+		E1AEA22D14687BDB00804569 /* WKFullKeyboardAccessWatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFullKeyboardAccessWatcher.h; sourceTree = "<group>"; };
+		E1AEA22E14687BDB00804569 /* WKFullKeyboardAccessWatcher.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKFullKeyboardAccessWatcher.mm; sourceTree = "<group>"; };
 		E1CC1B8E12D7EADF00625838 /* PrintInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrintInfo.h; sourceTree = "<group>"; };
 		E1CC1B8F12D7EADF00625838 /* PrintInfoMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PrintInfoMac.mm; sourceTree = "<group>"; };
 		E1EE53DC11F8CF9F00CCBEE4 /* InjectedBundlePageEditorClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundlePageEditorClient.h; sourceTree = "<group>"; };
@@ -2093,8 +2093,6 @@
 				1A6FA01D11E1526300DB1371 /* WebProcessMainMac.mm */,
 				511F8A77138B460900A95F44 /* WebProcessShim.h */,
 				511F8A78138B460900A95F44 /* WebProcessShim.mm */,
-				E1BB1688132018BA00F49431 /* WKFullKeyboardAccessWatcher.h */,
-				E1BB1689132018BA00F49431 /* WKFullKeyboardAccessWatcher.mm */,
 			);
 			path = mac;
 			sourceTree = "<group>";
@@ -3252,6 +3250,8 @@
 				BC5750961268F3C6006F0F12 /* WebPopupMenuProxyMac.mm */,
 				BC84EB1712A7100C0083F2DA /* WebPreferencesMac.mm */,
 				51D130571382F10500351EDD /* WebProcessProxyMac.mm */,
+				E1AEA22D14687BDB00804569 /* WKFullKeyboardAccessWatcher.h */,
+				E1AEA22E14687BDB00804569 /* WKFullKeyboardAccessWatcher.mm */,
 				CDCA85C7132ABA4E00E961DF /* WKFullScreenWindowController.h */,
 				CDCA85C6132ABA4E00E961DF /* WKFullScreenWindowController.mm */,
 			);
@@ -3893,7 +3893,6 @@
 				BCE81D8D1319F7EF00241910 /* FontInfo.h in Headers */,
 				BCE81D99131AE02100241910 /* DictionaryPopupInfo.h in Headers */,
 				37C4E9F6131C6E7E0029BD5A /* config.h in Headers */,
-				E1BB16A413201B9B00F49431 /* WKFullKeyboardAccessWatcher.h in Headers */,
 				33AA1067131F060000D4A575 /* WebCookieManagerProxyClient.h in Headers */,
 				CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */,
 				511B24A7132E095700065A0C /* WebIconDatabaseProxy.h in Headers */,
@@ -3939,6 +3938,7 @@
 				BCBAACF41452324F0053F82F /* WKBrowsingContextGroup.h in Headers */,
 				BCBAACF61452324F0053F82F /* WKBrowsingContextGroupInternal.h in Headers */,
 				BCBAAD0B14560A430053F82F /* WKBrowsingContextLoadDelegate.h in Headers */,
+				E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */,
 				1AAF263914687C39004A1E8A /* TiledCoreAnimationDrawingArea.h in Headers */,
 				1AF05D8714688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.h in Headers */,
 			);
@@ -4574,7 +4574,6 @@
 				3309345A1315B9980097A7BC /* WKCookieManager.cpp in Sources */,
 				BCE81D8C1319F7EF00241910 /* FontInfo.cpp in Sources */,
 				BCE81D98131AE02100241910 /* DictionaryPopupInfo.cpp in Sources */,
-				E1BB16A513201B9B00F49431 /* WKFullKeyboardAccessWatcher.mm in Sources */,
 				33AA1066131F060000D4A575 /* WebCookieManagerProxyClient.cpp in Sources */,
 				CD73BA47131ACC9A00EEDED2 /* WebFullScreenManagerProxyMessageReceiver.cpp in Sources */,
 				CD73BA4E131ACDB700EEDED2 /* WebFullScreenManagerMessageReceiver.cpp in Sources */,
@@ -4633,6 +4632,7 @@
 				BCBAAC72144E61990053F82F /* WKBrowsingContextController.mm in Sources */,
 				BCBAACEC145225E30053F82F /* WKProcessGroup.mm in Sources */,
 				BCBAACF51452324F0053F82F /* WKBrowsingContextGroup.mm in Sources */,
+				E1AEA23014687BDB00804569 /* WKFullKeyboardAccessWatcher.mm in Sources */,
 				1AAF263814687C39004A1E8A /* TiledCoreAnimationDrawingArea.mm in Sources */,
 				1AF05D8614688348008B1E81 /* TiledCoreAnimationDrawingAreaProxy.mm in Sources */,
 			);

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp	2011-11-07 22:51:59 UTC (rev 99483)
@@ -134,6 +134,7 @@
 #if USE(ACCELERATED_COMPOSITING) && PLATFORM(MAC)
     , m_compositingRenderServerPort(MACH_PORT_NULL)
 #endif
+    , m_fullKeyboardAccessEnabled(false)
 #if PLATFORM(QT)
     , m_networkAccessManager(0)
 #endif
@@ -287,6 +288,11 @@
     overrideDefaultLanguage(language);
 }
 
+void WebProcess::fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
+{
+    m_fullKeyboardAccessEnabled = fullKeyboardAccessEnabled;
+}
+
 void WebProcess::setVisitedLinkTable(const SharedMemory::Handle& handle)
 {
     RefPtr<SharedMemory> sharedMemory = SharedMemory::create(handle, SharedMemory::ReadOnly);
@@ -332,13 +338,6 @@
     m_connection->send(Messages::WebContext::AddVisitedLinkHash(linkHash), 0);
 }
 
-#if !PLATFORM(MAC)
-bool WebProcess::fullKeyboardAccessEnabled()
-{
-    return false;
-}
-#endif
-
 void WebProcess::setCacheModel(uint32_t cm)
 {
     CacheModel cacheModel = static_cast<CacheModel>(cm);

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/WebProcess.h	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h	2011-11-07 22:51:59 UTC (rev 99483)
@@ -96,7 +96,7 @@
     void addVisitedLink(WebCore::LinkHash);
     bool isLinkVisited(WebCore::LinkHash) const;
 
-    bool fullKeyboardAccessEnabled();
+    bool fullKeyboardAccessEnabled() const { return m_fullKeyboardAccessEnabled; }
 
     WebFrame* webFrame(uint64_t) const;
     void addWebFrame(uint64_t, WebFrame*);
@@ -143,6 +143,7 @@
     void setAlwaysUsesComplexTextCodePath(bool);
     void setShouldUseFontSmoothing(bool);
     void languageChanged(const String&) const;
+    void fullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled);
 #if PLATFORM(WIN)
     void setShouldPaintNativeControls(bool);
 #endif
@@ -228,6 +229,8 @@
     pid_t m_presenterApplicationPid;
 #endif
 
+    bool m_fullKeyboardAccessEnabled;
+
 #if PLATFORM(QT)
     QNetworkAccessManager* m_networkAccessManager;
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebProcess.messages.in (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/WebProcess.messages.in	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.messages.in	2011-11-07 22:51:59 UTC (rev 99483)
@@ -42,6 +42,7 @@
     SetAlwaysUsesComplexTextCodePath(bool alwaysUseComplexText)
     SetShouldUseFontSmoothing(bool useFontSmoothing)
     LanguageChanged(WTF::String language)
+    FullKeyboardAccessModeChanged(bool fullKeyboardAccessEnabled)
 #if PLATFORM(WIN)
     SetShouldPaintNativeControls(bool shouldPaintNativeControls)
 #endif

Modified: trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/com.apple.WebProcess.sb	2011-11-07 22:51:59 UTC (rev 99483)
@@ -65,9 +65,6 @@
        (subpath "/Library/Video/Plug-Ins")
        (subpath "/Library/QuickTime")
 
-       ;; FIXME: This should be removed when <rdar://problem/9237619> is fixed.
-       (home-literal "/Library/Preferences/com.apple.universalaccess.plist")
-
        ;; FIXME: This should be removed when <rdar://problem/9276253> is fixed.
        (home-subpath "/Library/Keyboard Layouts")
 

Deleted: trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.h (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.h	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.h	2011-11-07 22:51:59 UTC (rev 99483)
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WKFullKeyboardAccessWatcher_h
-#define WKFullKeyboardAccessWatcher_h
-
-#import <Cocoa/Cocoa.h>
-
-@interface WKFullKeyboardAccessWatcher : NSObject {
-@private
-    BOOL fullKeyboardAccessEnabled;
-}
-
-+ (BOOL)fullKeyboardAccessEnabled;
-
-@end;
-
-#endif // WKFullKeyboardAccessWatcher_h

Deleted: trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.mm (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.mm	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/mac/WKFullKeyboardAccessWatcher.mm	2011-11-07 22:51:59 UTC (rev 99483)
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "config.h"
-#import "WKFullKeyboardAccessWatcher.h"
-
-NSString * const KeyboardUIModeDidChangeNotification = @"com.apple.KeyboardUIModeDidChange";
-const CFStringRef AppleKeyboardUIMode = CFSTR("AppleKeyboardUIMode");
-const CFStringRef UniversalAccessDomain = CFSTR("com.apple.universalaccess");
-
-@implementation WKFullKeyboardAccessWatcher
-
-- (void)retrieveKeyboardUIModeFromPreferences:(NSNotification *)notification
-{
-    CFPreferencesAppSynchronize(UniversalAccessDomain);
-
-    Boolean keyExistsAndHasValidFormat;
-    int mode = CFPreferencesGetAppIntegerValue(AppleKeyboardUIMode, UniversalAccessDomain, &keyExistsAndHasValidFormat);
-    if (keyExistsAndHasValidFormat) {
-        // The keyboard access mode is reported by two bits:
-        // Bit 0 is set if feature is on
-        // Bit 1 is set if full keyboard access works for any control, not just text boxes and lists.
-        fullKeyboardAccessEnabled = (mode & 0x2);
-    }
-}
-
-- (id)init
-{
-    self = [super init];
-    if (!self)
-        return nil;
-
-    [self retrieveKeyboardUIModeFromPreferences:nil];
-
-    [[NSDistributedNotificationCenter defaultCenter] 
-        addObserver:self selector:@selector(retrieveKeyboardUIModeFromPreferences:) 
-        name:KeyboardUIModeDidChangeNotification object:nil];
-
-    return self;
-}
-
-+ (BOOL)fullKeyboardAccessEnabled
-{
-    static WKFullKeyboardAccessWatcher *watcher = [[WKFullKeyboardAccessWatcher alloc] init];
-    return watcher->fullKeyboardAccessEnabled;
-}
-
-@end

Modified: trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm (99482 => 99483)


--- trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm	2011-11-07 22:46:35 UTC (rev 99482)
+++ trunk/Source/WebKit2/WebProcess/mac/WebProcessMac.mm	2011-11-07 22:51:59 UTC (rev 99483)
@@ -133,11 +133,6 @@
     [[NSURLCache sharedURLCache] removeAllCachedResponses];
 }
 
-bool WebProcess::fullKeyboardAccessEnabled()
-{
-    return [WKFullKeyboardAccessWatcher fullKeyboardAccessEnabled];
-}
-
 #if ENABLE(WEB_PROCESS_SANDBOX)
 static void appendSandboxParameterPathInternal(Vector<const char*>& vector, const char* name, const char* path)
 {
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to