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

aa at chromium.org aa at chromium.org
Wed Dec 22 12:01:24 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit c150aba7ddff30dc4245c96ee285a6211e9db324
Author: aa at chromium.org <aa at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Aug 12 22:40:56 2010 +0000

    2010-08-12  Aaron Boodman  <aa at chromium.org>
    
            Reviewed by David Hyatt.
    
            Make the cascade level of "user" styles configurable
            https://bugs.webkit.org/show_bug.cgi?id=43457
    
            * WebCore.exp.in:
            * css/CSSStyleSelector.cpp:
            (WebCore::CSSStyleSelector::CSSStyleSelector):
            * dom/Document.cpp:
            (WebCore::Document::pageGroupUserSheets):
            * page/PageGroup.cpp:
            (WebCore::PageGroup::addUserStyleSheetToWorld):
            * page/PageGroup.h:
            * page/UserStyleSheet.h:
            (WebCore::UserStyleSheet::):
            (WebCore::UserStyleSheet::UserStyleSheet):
            (WebCore::UserStyleSheet::level):
    2010-08-12  Aaron Boodman  <aa at chromium.org>
    
            Reviewed by David Hyatt.
    
            Make the cascade level of "user" styles configurable
            https://bugs.webkit.org/show_bug.cgi?id=43457
    
            * src/WebViewImpl.cpp:
            (WebKit::WebView::addUserStyleSheet):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65273 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 5e393c0..aaa6e8f 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,23 @@
+2010-08-12  Aaron Boodman  <aa at chromium.org>
+
+        Reviewed by David Hyatt.
+
+        Make the cascade level of "user" styles configurable
+        https://bugs.webkit.org/show_bug.cgi?id=43457
+
+        * WebCore.exp.in:
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::CSSStyleSelector):
+        * dom/Document.cpp:
+        (WebCore::Document::pageGroupUserSheets):
+        * page/PageGroup.cpp:
+        (WebCore::PageGroup::addUserStyleSheetToWorld):
+        * page/PageGroup.h:
+        * page/UserStyleSheet.h:
+        (WebCore::UserStyleSheet::):
+        (WebCore::UserStyleSheet::UserStyleSheet):
+        (WebCore::UserStyleSheet::level):
+
 2010-08-12  Jian Li  <jianli at chromium.org>
 
         Fix qt build break.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index 2da4dee..1369296 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -820,7 +820,7 @@ __ZN7WebCore9PageGroup18addVisitedLinkHashEy
 __ZN7WebCore9PageGroup20addUserScriptToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_23UserScriptInjectionTimeENS_25UserContentInjectedFramesE
 __ZN7WebCore9PageGroup20removeAllUserContentEv
 __ZN7WebCore9PageGroup21removeAllVisitedLinksEv
-__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_25UserContentInjectedFramesE
+__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_25UserContentInjectedFramesENS_14UserStyleSheet5LevelE
 __ZN7WebCore9PageGroup25removeUserScriptFromWorldEPNS_15DOMWrapperWorldERKNS_4KURLE
 __ZN7WebCore9PageGroup26removeUserScriptsFromWorldEPNS_15DOMWrapperWorldE
 __ZN7WebCore9PageGroup26setShouldTrackVisitedLinksEb
diff --git a/WebCore/css/CSSStyleSelector.cpp b/WebCore/css/CSSStyleSelector.cpp
index 7d5464c..7575957 100644
--- a/WebCore/css/CSSStyleSelector.cpp
+++ b/WebCore/css/CSSStyleSelector.cpp
@@ -458,32 +458,37 @@ CSSStyleSelector::CSSStyleSelector(Document* doc, StyleSheetList* styleSheets, C
         m_medium = new MediaQueryEvaluator(view->mediaType(), view->frame(), m_rootDefaultStyle.get());
     }
 
+    m_authorStyle = new CSSRuleSet();
+
     // FIXME: This sucks! The user sheet is reparsed every time!
-    if (pageUserSheet || pageGroupUserSheets) {
-        m_userStyle = new CSSRuleSet();
-        if (pageUserSheet)
-            m_userStyle->addRulesFromSheet(pageUserSheet, *m_medium, this);
-        if (pageGroupUserSheets) {
-            unsigned length = pageGroupUserSheets->size();
-            for (unsigned i = 0; i < length; i++)
-                m_userStyle->addRulesFromSheet(pageGroupUserSheets->at(i).get(), *m_medium, this);
+    OwnPtr<CSSRuleSet> tempUserStyle(new CSSRuleSet);
+    if (pageUserSheet)
+        tempUserStyle->addRulesFromSheet(pageUserSheet, *m_medium, this);
+    if (pageGroupUserSheets) {
+        unsigned length = pageGroupUserSheets->size();
+        for (unsigned i = 0; i < length; i++) {
+            if (pageGroupUserSheets->at(i)->isUserStyleSheet())
+                tempUserStyle->addRulesFromSheet(pageGroupUserSheets->at(i).get(), *m_medium, this);
+            else
+                m_authorStyle->addRulesFromSheet(pageGroupUserSheets->at(i).get(), *m_medium, this);
         }
     }
 
-    // add stylesheets from document
-    m_authorStyle = new CSSRuleSet();
-    
+    if (tempUserStyle->m_ruleCount > 0 || tempUserStyle->m_pageRuleCount > 0)
+        m_userStyle = tempUserStyle.leakPtr();
+
     // Add rules from elements like SVG's <font-face>
     if (mappedElementSheet)
         m_authorStyle->addRulesFromSheet(mappedElementSheet, *m_medium, this);
 
+    // add stylesheets from document
     unsigned length = styleSheets->length();
     for (unsigned i = 0; i < length; i++) {
         StyleSheet* sheet = styleSheets->item(i);
         if (sheet->isCSSStyleSheet() && !sheet->disabled())
             m_authorStyle->addRulesFromSheet(static_cast<CSSStyleSheet*>(sheet), *m_medium, this);
     }
-    
+
     if (doc->renderer() && doc->renderer()->style())
         doc->renderer()->style()->font().update(fontSelector());
 }
diff --git a/WebCore/dom/Document.cpp b/WebCore/dom/Document.cpp
index d08e71b..59b7d6d 100644
--- a/WebCore/dom/Document.cpp
+++ b/WebCore/dom/Document.cpp
@@ -2225,7 +2225,7 @@ const Vector<RefPtr<CSSStyleSheet> >* Document::pageGroupUserSheets() const
             if (!UserContentURLPattern::matchesPatterns(url(), sheet->whitelist(), sheet->blacklist()))
                 continue;
             RefPtr<CSSStyleSheet> parsedSheet = CSSStyleSheet::createInline(const_cast<Document*>(this), sheet->url());
-            parsedSheet->setIsUserStyleSheet(true);
+            parsedSheet->setIsUserStyleSheet(sheet->level() == UserStyleSheet::UserLevel);
             parsedSheet->parseString(sheet->source(), !inCompatMode());
             if (!m_pageGroupUserSheets)
                 m_pageGroupUserSheets.set(new Vector<RefPtr<CSSStyleSheet> >);
diff --git a/WebCore/page/PageGroup.cpp b/WebCore/page/PageGroup.cpp
index 12b1a41..e39b812 100644
--- a/WebCore/page/PageGroup.cpp
+++ b/WebCore/page/PageGroup.cpp
@@ -236,11 +236,12 @@ void PageGroup::addUserScriptToWorld(DOMWrapperWorld* world, const String& sourc
 
 void PageGroup::addUserStyleSheetToWorld(DOMWrapperWorld* world, const String& source, const KURL& url,
                                          PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
-                                         UserContentInjectedFrames injectedFrames)
+                                         UserContentInjectedFrames injectedFrames,
+                                         UserStyleSheet::Level level)
 {
     ASSERT_ARG(world, world);
 
-    OwnPtr<UserStyleSheet> userStyleSheet(new UserStyleSheet(source, url, whitelist, blacklist, injectedFrames));
+    OwnPtr<UserStyleSheet> userStyleSheet(new UserStyleSheet(source, url, whitelist, blacklist, injectedFrames, level));
     if (!m_userStyleSheets)
         m_userStyleSheets.set(new UserStyleSheetMap);
     UserStyleSheetVector*& styleSheetsInWorld = m_userStyleSheets->add(world, 0).first->second;
diff --git a/WebCore/page/PageGroup.h b/WebCore/page/PageGroup.h
index 95db8c3..779704c 100644
--- a/WebCore/page/PageGroup.h
+++ b/WebCore/page/PageGroup.h
@@ -80,7 +80,8 @@ namespace WebCore {
                                   UserScriptInjectionTime, UserContentInjectedFrames);
         void addUserStyleSheetToWorld(DOMWrapperWorld*, const String& source, const KURL&,
                                       PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
-                                      UserContentInjectedFrames);
+                                      UserContentInjectedFrames,
+                                      UserStyleSheet::Level level = UserStyleSheet::UserLevel);
 
         void removeUserScriptFromWorld(DOMWrapperWorld*, const KURL&);
         void removeUserStyleSheetFromWorld(DOMWrapperWorld*, const KURL&);
diff --git a/WebCore/page/UserStyleSheet.h b/WebCore/page/UserStyleSheet.h
index 4c6d708..1acd296 100644
--- a/WebCore/page/UserStyleSheet.h
+++ b/WebCore/page/UserStyleSheet.h
@@ -37,14 +37,20 @@ namespace WebCore {
 
 class UserStyleSheet : public Noncopyable {
 public:
+    enum Level {
+        UserLevel,
+        AuthorLevel
+    };
+
     UserStyleSheet(const String& source, const KURL& url,
                    PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
-                   UserContentInjectedFrames injectedFrames)
+                   UserContentInjectedFrames injectedFrames, Level level)
         : m_source(source)
         , m_url(url)
         , m_whitelist(whitelist)
         , m_blacklist(blacklist)
         , m_injectedFrames(injectedFrames)
+        , m_level(level)
     {
     }
 
@@ -53,6 +59,7 @@ public:
     const Vector<String>* whitelist() const { return m_whitelist.get(); }
     const Vector<String>* blacklist() const { return m_blacklist.get(); }
     UserContentInjectedFrames injectedFrames() const { return m_injectedFrames; }
+    Level level() const { return m_level; }
 
 private:
     String m_source;
@@ -60,6 +67,7 @@ private:
     OwnPtr<Vector<String> > m_whitelist;
     OwnPtr<Vector<String> > m_blacklist;
     UserContentInjectedFrames m_injectedFrames;
+    Level m_level;
 };
 
 } // namespace WebCore
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 6d92931..10a045a 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,13 @@
+2010-08-12  Aaron Boodman  <aa at chromium.org>
+
+        Reviewed by David Hyatt.
+
+        Make the cascade level of "user" styles configurable
+        https://bugs.webkit.org/show_bug.cgi?id=43457
+
+        * src/WebViewImpl.cpp:
+        (WebKit::WebView::addUserStyleSheet):
+
 2010-08-12  John Gregg  <johnnyg at google.com>
 
         Reviewed by Kent Tamura.
diff --git a/WebKit/chromium/src/WebViewImpl.cpp b/WebKit/chromium/src/WebViewImpl.cpp
index 8733a2a..62b20d5 100644
--- a/WebKit/chromium/src/WebViewImpl.cpp
+++ b/WebKit/chromium/src/WebViewImpl.cpp
@@ -1949,8 +1949,14 @@ void WebView::addUserStyleSheet(const WebString& sourceCode,
 
     PageGroup* pageGroup = PageGroup::pageGroup(pageGroupName);
     RefPtr<DOMWrapperWorld> world(DOMWrapperWorld::create());
+
+    // FIXME: Current callers always want the level to be "author". It probably makes sense to let
+    // callers specify this though, since in other cases the caller will probably want "user" level.
+    //
+    // FIXME: It would be nice to populate the URL correctly, instead of passing an empty URL.
     pageGroup->addUserStyleSheetToWorld(world.get(), sourceCode, WebURL(), patterns.release(), 0,
-                                        static_cast<UserContentInjectedFrames>(injectIn));
+                                        static_cast<UserContentInjectedFrames>(injectIn),
+                                        UserStyleSheet::AuthorLevel);
 }
 
 void WebView::removeAllUserContent()

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list