Title: [98769] trunk/Source
Revision
98769
Author
[email protected]
Date
2011-10-28 15:07:16 -0700 (Fri, 28 Oct 2011)

Log Message

Source/WebCore: WebCore part of:
https://bugs.webkit.org/show_bug.cgi?id=71142
Whether backspace goes Back should be configurable

Reviewed by Sam Weinig.

* page/EventHandler.cpp:
(WebCore::EventHandler::defaultBackspaceEventHandler):
Bail out if backspace navigation is not enabled.

* page/Settings.cpp:
(WebCore::Settings::Settings):
Initialize m_backspaceKeyNavigationEnabled to true to match current behavior.

* page/Settings.h:
Declared m_backspaceKeyNavigationEnabled.
(WebCore::Settings::setBackspaceKeyNavigationEnabled):
New function, simple setter.
(WebCore::Settings::backspaceKeyNavigationEnabled):
New function, simple getter.

Source/WebKit/mac: WebKit part of:
https://bugs.webkit.org/show_bug.cgi?id=71142
Whether backspace goes Back should be configurable

Reviewed by Sam Weinig.

* WebView/WebFrameView.mm:
(-[WebFrameView keyDown:]):
Honor the new preference.

* WebView/WebPreferenceKeysPrivate.h:
Added #define for WebKitBackspaceKeyNavigationEnabledKey
        
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
Initialize new pref to YES, to match current behavior.
(-[WebPreferences setBackspaceKeyNavigationEnabled:]):
New method, standard prefs setter.
(-[WebPreferences backspaceKeyNavigationEnabled]):
New method, standard prefs getter.

* WebView/WebPreferencesPrivate.h:
Declared new methods.
        
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Updates WebCore settings from WebKit prefs.

Source/WebKit2: WebKit2 part of:
https://bugs.webkit.org/show_bug.cgi?id=71142
Whether backspace goes Back should be configurable

Reviewed by Sam Weinig.

* Shared/WebPreferencesStore.h:
Declared backspaceKeyNavigationEnabled property using macro. This initializes
it to true, to match current behavior.
        
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetBackspaceKeyNavigationEnabled):
New function, pass value to impl.
(WKPreferencesGetBackspaceKeyNavigationEnabled):
New function, returns result from impl.
        
* UIProcess/API/C/WKPreferences.h:
Declared API functions for new preference.
        
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Updates WebCore settings from WebKit2 prefs.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (98768 => 98769)


--- trunk/Source/WebCore/ChangeLog	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebCore/ChangeLog	2011-10-28 22:07:16 UTC (rev 98769)
@@ -1,3 +1,26 @@
+2011-10-28  John Sullivan  <[email protected]>
+
+        WebCore part of:
+        https://bugs.webkit.org/show_bug.cgi?id=71142
+        Whether backspace goes Back should be configurable
+
+        Reviewed by Sam Weinig.
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::defaultBackspaceEventHandler):
+        Bail out if backspace navigation is not enabled.
+
+        * page/Settings.cpp:
+        (WebCore::Settings::Settings):
+        Initialize m_backspaceKeyNavigationEnabled to true to match current behavior.
+
+        * page/Settings.h:
+        Declared m_backspaceKeyNavigationEnabled.
+        (WebCore::Settings::setBackspaceKeyNavigationEnabled):
+        New function, simple setter.
+        (WebCore::Settings::backspaceKeyNavigationEnabled):
+        New function, simple getter.
+
 2011-10-28  Emil A Eklund  <[email protected]>
 
         Overridden clippedOverflowRectForRepaint() still uses IntRects

Modified: trunk/Source/WebCore/page/EventHandler.cpp (98768 => 98769)


--- trunk/Source/WebCore/page/EventHandler.cpp	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebCore/page/EventHandler.cpp	2011-10-28 22:07:16 UTC (rev 98769)
@@ -3023,6 +3023,9 @@
 
     if (!m_frame->editor()->behavior().shouldNavigateBackOnBackspace())
         return;
+    
+    if (!m_frame->settings()->backspaceKeyNavigationEnabled())
+        return;
 
     Page* page = m_frame->page();
     if (!page)

Modified: trunk/Source/WebCore/page/Settings.cpp (98768 => 98769)


--- trunk/Source/WebCore/page/Settings.cpp	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebCore/page/Settings.cpp	2011-10-28 22:07:16 UTC (rev 98769)
@@ -229,6 +229,7 @@
     , m_passwordEchoEnabled(false)
 #endif
     , m_suppressIncrementalRendering(false)
+    , m_backspaceKeyNavigationEnabled(true)
     , m_loadsImagesAutomaticallyTimer(this, &Settings::loadsImagesAutomaticallyTimerFired)
 {
     // A Frame may not have been created yet, so we initialize the AtomicString 

Modified: trunk/Source/WebCore/page/Settings.h (98768 => 98769)


--- trunk/Source/WebCore/page/Settings.h	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebCore/page/Settings.h	2011-10-28 22:07:16 UTC (rev 98769)
@@ -469,7 +469,10 @@
 
         void setSuppressIncrementalRendering(bool flag) { m_suppressIncrementalRendering = flag; }
         bool suppressIncrementalRendering() const { return m_suppressIncrementalRendering; }
-
+        
+        void setBackspaceKeyNavigationEnabled(bool flag) { m_backspaceKeyNavigationEnabled = flag; }
+        bool backspaceKeyNavigationEnabled() const { return m_backspaceKeyNavigationEnabled; }
+        
         void setPasswordEchoDurationInSeconds(double durationInSeconds) { m_passwordEchoDurationInSeconds = durationInSeconds; }
         double passwordEchoDurationInSeconds() const { return m_passwordEchoDurationInSeconds; }
 
@@ -607,6 +610,7 @@
         bool m_mediaPlaybackAllowsInline : 1;
         bool m_passwordEchoEnabled : 1;
         bool m_suppressIncrementalRendering : 1;
+        bool m_backspaceKeyNavigationEnabled : 1;
 
         Timer<Settings> m_loadsImagesAutomaticallyTimer;
         void loadsImagesAutomaticallyTimerFired(Timer<Settings>*);

Modified: trunk/Source/WebKit/mac/ChangeLog (98768 => 98769)


--- trunk/Source/WebKit/mac/ChangeLog	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit/mac/ChangeLog	2011-10-28 22:07:16 UTC (rev 98769)
@@ -1,3 +1,33 @@
+2011-10-28  John Sullivan  <[email protected]>
+
+        WebKit part of:
+        https://bugs.webkit.org/show_bug.cgi?id=71142
+        Whether backspace goes Back should be configurable
+
+        Reviewed by Sam Weinig.
+
+        * WebView/WebFrameView.mm:
+        (-[WebFrameView keyDown:]):
+        Honor the new preference.
+
+        * WebView/WebPreferenceKeysPrivate.h:
+        Added #define for WebKitBackspaceKeyNavigationEnabledKey
+        
+        * WebView/WebPreferences.mm:
+        (+[WebPreferences initialize]):
+        Initialize new pref to YES, to match current behavior.
+        (-[WebPreferences setBackspaceKeyNavigationEnabled:]):
+        New method, standard prefs setter.
+        (-[WebPreferences backspaceKeyNavigationEnabled]):
+        New method, standard prefs getter.
+
+        * WebView/WebPreferencesPrivate.h:
+        Declared new methods.
+        
+        * WebView/WebView.mm:
+        (-[WebView _preferencesChanged:]):
+        Updates WebCore settings from WebKit prefs.
+
 2011-10-28  Jochen Eisinger  <[email protected]>
 
         Rename a number of methods mentioning _javascript_ to just Script instead

Modified: trunk/Source/WebKit/mac/WebView/WebFrameView.mm (98768 => 98769)


--- trunk/Source/WebKit/mac/WebView/WebFrameView.mm	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit/mac/WebView/WebFrameView.mm	2011-10-28 22:07:16 UTC (rev 98769)
@@ -784,7 +784,7 @@
     for (index = 0; index < count; ++index) {
         switch ([characters characterAtIndex:index]) {
             case NSDeleteCharacter:
-                if (!maintainsBackForwardList) {
+                if (!maintainsBackForwardList || ![[[self _webView] preferences] backspaceKeyNavigationEnabled]) {
                     callSuper = YES;
                     break;
                 }

Modified: trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h (98768 => 98769)


--- trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit/mac/WebView/WebPreferenceKeysPrivate.h	2011-10-28 22:07:16 UTC (rev 98769)
@@ -126,6 +126,7 @@
 #define WebKitEditingBehaviorPreferenceKey @"WebKitEditingBehavior"
 #define WebKitUsePreHTML5ParserQuirksKey @"WebKitUsePreHTML5ParserQuirks"
 #define WebKitSuppressIncrementalRenderingKey @"WebKitSuppressIncrementalRendering"
+#define WebKitBackspaceKeyNavigationEnabledKey @"WebKitBackspaceKeyNavigationEnabled"
 
 // CoreGraphics deferred updates are disabled if WebKitEnableCoalescedUpdatesPreferenceKey is set
 // to NO, or has no value.  For compatibility with Mac OS X 10.4.6, deferred updates are OFF by

Modified: trunk/Source/WebKit/mac/WebView/WebPreferences.mm (98768 => 98769)


--- trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit/mac/WebView/WebPreferences.mm	2011-10-28 22:07:16 UTC (rev 98769)
@@ -386,6 +386,7 @@
         [NSNumber numberWithBool:YES],  WebKitMediaPlaybackAllowsInlinePreferenceKey,
         [NSNumber numberWithBool:NO],   WebKitWebAudioEnabledPreferenceKey,
         [NSNumber numberWithBool:NO],   WebKitSuppressIncrementalRenderingKey,
+        [NSNumber numberWithBool:YES],  WebKitBackspaceKeyNavigationEnabledKey,
 
         [NSNumber numberWithLongLong:ApplicationCacheStorage::noQuota()], WebKitApplicationCacheTotalQuota,
         [NSNumber numberWithLongLong:ApplicationCacheStorage::noQuota()], WebKitApplicationCacheDefaultOriginQuota,
@@ -1563,6 +1564,16 @@
     return [self _boolValueForKey:WebKitSuppressIncrementalRenderingKey];
 }
 
+- (void)setBackspaceKeyNavigationEnabled:(BOOL)flag
+{
+    [self _setBoolValue:flag forKey:WebKitBackspaceKeyNavigationEnabledKey];
+}
+
+- (BOOL)backspaceKeyNavigationEnabled
+{
+    return [self _boolValueForKey:WebKitBackspaceKeyNavigationEnabledKey];
+}
+
 @end
 
 @implementation WebPreferences (WebInternal)

Modified: trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h (98768 => 98769)


--- trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit/mac/WebView/WebPreferencesPrivate.h	2011-10-28 22:07:16 UTC (rev 98769)
@@ -268,4 +268,7 @@
 - (void)setSuppressIncrementalRendering:(BOOL)flag;
 - (BOOL)suppressIncrementalRendering;
 
+- (void)setBackspaceKeyNavigationEnabled:(BOOL)flag;
+- (BOOL)backspaceKeyNavigationEnabled;
+
 @end

Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (98768 => 98769)


--- trunk/Source/WebKit/mac/WebView/WebView.mm	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm	2011-10-28 22:07:16 UTC (rev 98769)
@@ -1474,6 +1474,7 @@
     settings->setMediaPlaybackRequiresUserGesture([preferences mediaPlaybackRequiresUserGesture]);
     settings->setMediaPlaybackAllowsInline([preferences mediaPlaybackAllowsInline]);
     settings->setSuppressIncrementalRendering([preferences suppressIncrementalRendering]);
+    settings->setBackspaceKeyNavigationEnabled([preferences backspaceKeyNavigationEnabled]);
 
     // Application Cache Preferences are stored on the global cache storage manager, not in Settings.
     [WebApplicationCache setDefaultOriginQuota:[preferences applicationCacheDefaultOriginQuota]];

Modified: trunk/Source/WebKit2/ChangeLog (98768 => 98769)


--- trunk/Source/WebKit2/ChangeLog	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit2/ChangeLog	2011-10-28 22:07:16 UTC (rev 98769)
@@ -1,3 +1,28 @@
+2011-10-28  John Sullivan  <[email protected]>
+
+        WebKit2 part of:
+        https://bugs.webkit.org/show_bug.cgi?id=71142
+        Whether backspace goes Back should be configurable
+
+        Reviewed by Sam Weinig.
+
+        * Shared/WebPreferencesStore.h:
+        Declared backspaceKeyNavigationEnabled property using macro. This initializes
+        it to true, to match current behavior.
+        
+        * UIProcess/API/C/WKPreferences.cpp:
+        (WKPreferencesSetBackspaceKeyNavigationEnabled):
+        New function, pass value to impl.
+        (WKPreferencesGetBackspaceKeyNavigationEnabled):
+        New function, returns result from impl.
+        
+        * UIProcess/API/C/WKPreferences.h:
+        Declared API functions for new preference.
+        
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences):
+        Updates WebCore settings from WebKit2 prefs.
+
 2011-10-28  Timothy Hatcher  <[email protected]>
 
         Support using a different front-end for the Web Inspector in WebKit2.

Modified: trunk/Source/WebKit2/Shared/WebPreferencesStore.h (98768 => 98769)


--- trunk/Source/WebKit2/Shared/WebPreferencesStore.h	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit2/Shared/WebPreferencesStore.h	2011-10-28 22:07:16 UTC (rev 98769)
@@ -96,6 +96,7 @@
     macro(WebAudioEnabled, webAudioEnabled, Bool, bool, false) \
     macro(ApplicationChromeModeEnabled, applicationChromeMode, Bool, bool, false) \
     macro(SuppressIncrementalRendering, suppressIncrementalRendering, Bool, bool, false) \
+    macro(BackspaceKeyNavigationEnabled, backspaceKeyNavigationEnabled, Bool, bool, true) \
     \
 
 #define FOR_EACH_WEBKIT_DOUBLE_PREFERENCE(macro) \

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp (98768 => 98769)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.cpp	2011-10-28 22:07:16 UTC (rev 98769)
@@ -651,3 +651,13 @@
 {
     return toImpl(preferencesRef)->suppressIncrementalRendering();
 }
+
+void WKPreferencesSetBackspaceKeyNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled)
+{
+    toImpl(preferencesRef)->setBackspaceKeyNavigationEnabled(enabled);
+}
+
+bool WKPreferencesGetBackspaceKeyNavigationEnabled(WKPreferencesRef preferencesRef)
+{
+    return toImpl(preferencesRef)->backspaceKeyNavigationEnabled();
+}

Modified: trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h (98768 => 98769)


--- trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPreferences.h	2011-10-28 22:07:16 UTC (rev 98769)
@@ -173,6 +173,10 @@
 WK_EXPORT void WKPreferencesSetSuppressIncrementalRendering(WKPreferencesRef preferencesRef, bool enabled);
 WK_EXPORT bool WKPreferencesGetSuppressIncrementalRendering(WKPreferencesRef preferencesRef);
 
+// Defaults to true
+WK_EXPORT void WKPreferencesSetBackspaceKeyNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled);
+WK_EXPORT bool WKPreferencesGetBackspaceKeyNavigationEnabled(WKPreferencesRef preferencesRef);
+
 #ifdef __cplusplus
 }
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (98768 => 98769)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2011-10-28 21:55:59 UTC (rev 98768)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2011-10-28 22:07:16 UTC (rev 98769)
@@ -1748,6 +1748,7 @@
 
     settings->setApplicationChromeMode(store.getBoolValueForKey(WebPreferencesKey::applicationChromeModeKey()));    
     settings->setSuppressIncrementalRendering(store.getBoolValueForKey(WebPreferencesKey::suppressIncrementalRenderingKey()));
+    settings->setBackspaceKeyNavigationEnabled(store.getBoolValueForKey(WebPreferencesKey::backspaceKeyNavigationEnabledKey()));
 
     platformPreferencesDidChange(store);
 }
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to