[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

mitz at apple.com mitz at apple.com
Wed Dec 22 15:05:30 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit cde61c196c8b2efe466cba0e06b130500f11c125
Author: mitz at apple.com <mitz at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 27 21:38:46 2010 +0000

    REGRESSION (r70335): Incorrect article layout in Safari Reader
    https://bugs.webkit.org/show_bug.cgi?id=48436
    
    Reviewed by Darin Adler.
    
    WebCore:
    
    * page/DOMWindow.cpp:
    (WebCore::DOMWindow::getMatchedCSSRules): Return rules from all origins if the cross-origin
    check is disabled.
    * page/Settings.cpp:
    (WebCore::Settings::Settings): Initialize m_crossOriginCheckInGetMatchedCSSRulesDisabled.
    * page/Settings.h:
    (WebCore::Settings::setCrossOriginCheckInGetMatchedCSSRulesDisabled): Added this accessor.
    (WebCore::Settings::crossOriginCheckInGetMatchedCSSRulesDisabled): Ditto.
    
    WebKit/mac:
    
    * Misc/WebKitVersionChecks.h: Added WEBKIT_FIRST_VERSION_WITH_GET_MATCHED_CSS_RULES_RESTRICTIONS.
    * WebView/WebView.mm:
    (-[WebView _needsUnrestrictedGetMatchedCSSRules]): Added. Returns YES for Safari linked against
    versions of WebKit that did not have the cross-origin restrictions in getMatchedCSSRules().
    (-[WebView _preferencesChangedNotification:]): Call Settings::setCrossOriginCheckInGetMatchedCSSRulesDisabled()
    based on the above.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@70714 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 995c338..e244fc7 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-10-27  Dan Bernstein  <mitz at apple.com>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION (r70335): Incorrect article layout in Safari Reader
+        https://bugs.webkit.org/show_bug.cgi?id=48436
+
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::getMatchedCSSRules): Return rules from all origins if the cross-origin
+        check is disabled.
+        * page/Settings.cpp:
+        (WebCore::Settings::Settings): Initialize m_crossOriginCheckInGetMatchedCSSRulesDisabled.
+        * page/Settings.h:
+        (WebCore::Settings::setCrossOriginCheckInGetMatchedCSSRulesDisabled): Added this accessor.
+        (WebCore::Settings::crossOriginCheckInGetMatchedCSSRulesDisabled): Ditto.
+
 2010-10-27  Zhenyao Mo  <zmo at google.com>
 
         Reviewed by Kenneth Russell.
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp
index 3484a27..32fef62 100644
--- a/WebCore/page/DOMWindow.cpp
+++ b/WebCore/page/DOMWindow.cpp
@@ -1254,8 +1254,8 @@ PassRefPtr<CSSRuleList> DOMWindow::getMatchedCSSRules(Element* elt, const String
     if (!m_frame)
         return 0;
 
-    Document* doc = m_frame->document();
-    return doc->styleSelector()->styleRulesForElement(elt, authorOnly, false, SameOriginCSSRulesOnly);
+    Settings* settings = m_frame->settings();
+    return m_frame->document()->styleSelector()->styleRulesForElement(elt, authorOnly, false, settings && settings->crossOriginCheckInGetMatchedCSSRulesDisabled() ? AllCSSRules : SameOriginCSSRulesOnly);
 }
 
 PassRefPtr<WebKitPoint> DOMWindow::webkitConvertPointFromNodeToPage(Node* node, const WebKitPoint* p) const
diff --git a/WebCore/page/Settings.cpp b/WebCore/page/Settings.cpp
index dc8fcb5..0516701 100644
--- a/WebCore/page/Settings.cpp
+++ b/WebCore/page/Settings.cpp
@@ -149,6 +149,7 @@ Settings::Settings(Page* page)
     , m_interactiveFormValidation(false)
     , m_usePreHTML5ParserQuirks(false)
     , m_hyperlinkAuditingEnabled(false)
+    , m_crossOriginCheckInGetMatchedCSSRulesDisabled(false)
 {
     // A Frame may not have been created yet, so we initialize the AtomicString 
     // hash before trying to use it.
diff --git a/WebCore/page/Settings.h b/WebCore/page/Settings.h
index a8018dd..b8d7a31 100644
--- a/WebCore/page/Settings.h
+++ b/WebCore/page/Settings.h
@@ -332,6 +332,9 @@ namespace WebCore {
         void setHyperlinkAuditingEnabled(bool flag) { m_hyperlinkAuditingEnabled = flag; }
         bool hyperlinkAuditingEnabled() const { return m_hyperlinkAuditingEnabled; }
 
+        void setCrossOriginCheckInGetMatchedCSSRulesDisabled(bool flag) { m_crossOriginCheckInGetMatchedCSSRulesDisabled = flag; }
+        bool crossOriginCheckInGetMatchedCSSRulesDisabled() const { return m_crossOriginCheckInGetMatchedCSSRulesDisabled; }
+
     private:
         Page* m_page;
 
@@ -419,6 +422,7 @@ namespace WebCore {
         bool m_interactiveFormValidation: 1;
         bool m_usePreHTML5ParserQuirks: 1;
         bool m_hyperlinkAuditingEnabled : 1;
+        bool m_crossOriginCheckInGetMatchedCSSRulesDisabled : 1;
 
 #if USE(SAFARI_THEME)
         static bool gShouldPaintNativeControls;
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index 46bbbdf..8c320da 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,17 @@
+2010-10-27  Dan Bernstein  <mitz at apple.com>
+
+        Reviewed by Darin Adler.
+
+        REGRESSION (r70335): Incorrect article layout in Safari Reader
+        https://bugs.webkit.org/show_bug.cgi?id=48436
+
+        * Misc/WebKitVersionChecks.h: Added WEBKIT_FIRST_VERSION_WITH_GET_MATCHED_CSS_RULES_RESTRICTIONS.
+        * WebView/WebView.mm:
+        (-[WebView _needsUnrestrictedGetMatchedCSSRules]): Added. Returns YES for Safari linked against
+        versions of WebKit that did not have the cross-origin restrictions in getMatchedCSSRules().
+        (-[WebView _preferencesChangedNotification:]): Call Settings::setCrossOriginCheckInGetMatchedCSSRulesDisabled()
+        based on the above.
+
 2010-10-18  Jer Noble  <jer.noble at apple.com>
 
         Reviewed by Eric Carlson.
diff --git a/WebKit/mac/Misc/WebKitVersionChecks.h b/WebKit/mac/Misc/WebKitVersionChecks.h
index 4bf2c83..9d59665 100644
--- a/WebKit/mac/Misc/WebKitVersionChecks.h
+++ b/WebKit/mac/Misc/WebKitVersionChecks.h
@@ -55,6 +55,7 @@
 #define WEBKIT_FIRST_VERSION_WITHOUT_CONTENT_SNIFFING_FOR_FILE_URLS 0x02120A00 // 530.10.0
 #define WEBKIT_FIRST_VERSION_WITHOUT_LINK_ELEMENT_TEXT_CSS_QUIRK 0x02130200 // 531.2.0
 #define WEBKIT_FIRST_VERSION_WITH_HTML5_PARSER 0x02160900 // 534.9.0
+#define WEBKIT_FIRST_VERSION_WITH_GET_MATCHED_CSS_RULES_RESTRICTIONS 0x02160B00 // 534.11.0
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/WebKit/mac/WebView/WebView.mm b/WebKit/mac/WebView/WebView.mm
index 2c26eaf..5a4e268 100644
--- a/WebKit/mac/WebView/WebView.mm
+++ b/WebKit/mac/WebView/WebView.mm
@@ -1398,6 +1398,12 @@ static bool fastDocumentTeardownEnabled()
         || [[self preferences] usePreHTML5ParserQuirks];
 }
 
+- (BOOL)_needsUnrestrictedGetMatchedCSSRules
+{
+    static bool needsUnrestrictedGetMatchedCSSRules = !WebKitLinkedOnOrAfter(WEBKIT_FIRST_VERSION_WITH_GET_MATCHED_CSS_RULES_RESTRICTIONS) && applicationIsSafari();
+    return needsUnrestrictedGetMatchedCSSRules;
+}
+
 - (void)_preferencesChangedNotification:(NSNotification *)notification
 {
     WebPreferences *preferences = (WebPreferences *)[notification object];
@@ -1496,6 +1502,7 @@ static bool fastDocumentTeardownEnabled()
     settings->setMemoryInfoEnabled([preferences memoryInfoEnabled]);
     settings->setHyperlinkAuditingEnabled([preferences hyperlinkAuditingEnabled]);
     settings->setUsePreHTML5ParserQuirks([self _needsPreHTML5ParserQuirks]);
+    settings->setCrossOriginCheckInGetMatchedCSSRulesDisabled([self _needsUnrestrictedGetMatchedCSSRules]);
 
     // Application Cache Preferences are stored on the global cache storage manager, not in Settings.
     [WebApplicationCache setDefaultOriginQuota:[preferences applicationCacheDefaultOriginQuota]];

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list