Changeset 65273 in webkit


Ignore:
Timestamp:
Aug 12, 2010 3:40:56 PM (14 years ago)
Author:
aa@chromium.org
Message:

2010-08-12 Aaron Boodman <aa@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@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):
Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r65272 r65273  
     12010-08-12  Aaron Boodman  <aa@chromium.org>
     2
     3        Reviewed by David Hyatt.
     4
     5        Make the cascade level of "user" styles configurable
     6        https://bugs.webkit.org/show_bug.cgi?id=43457
     7
     8        * WebCore.exp.in:
     9        * css/CSSStyleSelector.cpp:
     10        (WebCore::CSSStyleSelector::CSSStyleSelector):
     11        * dom/Document.cpp:
     12        (WebCore::Document::pageGroupUserSheets):
     13        * page/PageGroup.cpp:
     14        (WebCore::PageGroup::addUserStyleSheetToWorld):
     15        * page/PageGroup.h:
     16        * page/UserStyleSheet.h:
     17        (WebCore::UserStyleSheet::):
     18        (WebCore::UserStyleSheet::UserStyleSheet):
     19        (WebCore::UserStyleSheet::level):
     20
    1212010-08-12  Jian Li  <jianli@chromium.org>
    222
  • trunk/WebCore/WebCore.exp.in

    r65234 r65273  
    821821__ZN7WebCore9PageGroup20removeAllUserContentEv
    822822__ZN7WebCore9PageGroup21removeAllVisitedLinksEv
    823 __ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_25UserContentInjectedFramesE
     823__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_25UserContentInjectedFramesENS_14UserStyleSheet5LevelE
    824824__ZN7WebCore9PageGroup25removeUserScriptFromWorldEPNS_15DOMWrapperWorldERKNS_4KURLE
    825825__ZN7WebCore9PageGroup26removeUserScriptsFromWorldEPNS_15DOMWrapperWorldE
  • trunk/WebCore/css/CSSStyleSelector.cpp

    r65205 r65273  
    459459    }
    460460
     461    m_authorStyle = new CSSRuleSet();
     462
    461463    // FIXME: This sucks! The user sheet is reparsed every time!
    462     if (pageUserSheet || pageGroupUserSheets) {
    463         m_userStyle = new CSSRuleSet();
    464         if (pageUserSheet)
    465             m_userStyle->addRulesFromSheet(pageUserSheet, *m_medium, this);
    466         if (pageGroupUserSheets) {
    467             unsigned length = pageGroupUserSheets->size();
    468             for (unsigned i = 0; i < length; i++)
    469                 m_userStyle->addRulesFromSheet(pageGroupUserSheets->at(i).get(), *m_medium, this);
    470         }
    471     }
    472 
    473     // add stylesheets from document
    474     m_authorStyle = new CSSRuleSet();
    475    
     464    OwnPtr<CSSRuleSet> tempUserStyle(new CSSRuleSet);
     465    if (pageUserSheet)
     466        tempUserStyle->addRulesFromSheet(pageUserSheet, *m_medium, this);
     467    if (pageGroupUserSheets) {
     468        unsigned length = pageGroupUserSheets->size();
     469        for (unsigned i = 0; i < length; i++) {
     470            if (pageGroupUserSheets->at(i)->isUserStyleSheet())
     471                tempUserStyle->addRulesFromSheet(pageGroupUserSheets->at(i).get(), *m_medium, this);
     472            else
     473                m_authorStyle->addRulesFromSheet(pageGroupUserSheets->at(i).get(), *m_medium, this);
     474        }
     475    }
     476
     477    if (tempUserStyle->m_ruleCount > 0 || tempUserStyle->m_pageRuleCount > 0)
     478        m_userStyle = tempUserStyle.leakPtr();
     479
    476480    // Add rules from elements like SVG's <font-face>
    477481    if (mappedElementSheet)
    478482        m_authorStyle->addRulesFromSheet(mappedElementSheet, *m_medium, this);
    479483
     484    // add stylesheets from document
    480485    unsigned length = styleSheets->length();
    481486    for (unsigned i = 0; i < length; i++) {
     
    484489            m_authorStyle->addRulesFromSheet(static_cast<CSSStyleSheet*>(sheet), *m_medium, this);
    485490    }
    486    
     491
    487492    if (doc->renderer() && doc->renderer()->style())
    488493        doc->renderer()->style()->font().update(fontSelector());
  • trunk/WebCore/dom/Document.cpp

    r65193 r65273  
    22262226                continue;
    22272227            RefPtr<CSSStyleSheet> parsedSheet = CSSStyleSheet::createInline(const_cast<Document*>(this), sheet->url());
    2228             parsedSheet->setIsUserStyleSheet(true);
     2228            parsedSheet->setIsUserStyleSheet(sheet->level() == UserStyleSheet::UserLevel);
    22292229            parsedSheet->parseString(sheet->source(), !inCompatMode());
    22302230            if (!m_pageGroupUserSheets)
  • trunk/WebCore/page/PageGroup.cpp

    r65234 r65273  
    237237void PageGroup::addUserStyleSheetToWorld(DOMWrapperWorld* world, const String& source, const KURL& url,
    238238                                         PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
    239                                          UserContentInjectedFrames injectedFrames)
    240 {
    241     ASSERT_ARG(world, world);
    242 
    243     OwnPtr<UserStyleSheet> userStyleSheet(new UserStyleSheet(source, url, whitelist, blacklist, injectedFrames));
     239                                         UserContentInjectedFrames injectedFrames,
     240                                         UserStyleSheet::Level level)
     241{
     242    ASSERT_ARG(world, world);
     243
     244    OwnPtr<UserStyleSheet> userStyleSheet(new UserStyleSheet(source, url, whitelist, blacklist, injectedFrames, level));
    244245    if (!m_userStyleSheets)
    245246        m_userStyleSheets.set(new UserStyleSheetMap);
  • trunk/WebCore/page/PageGroup.h

    r65234 r65273  
    8181        void addUserStyleSheetToWorld(DOMWrapperWorld*, const String& source, const KURL&,
    8282                                      PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
    83                                       UserContentInjectedFrames);
     83                                      UserContentInjectedFrames,
     84                                      UserStyleSheet::Level level = UserStyleSheet::UserLevel);
    8485
    8586        void removeUserScriptFromWorld(DOMWrapperWorld*, const KURL&);
  • trunk/WebCore/page/UserStyleSheet.h

    r65193 r65273  
    3838class UserStyleSheet : public Noncopyable {
    3939public:
     40    enum Level {
     41        UserLevel,
     42        AuthorLevel
     43    };
     44
    4045    UserStyleSheet(const String& source, const KURL& url,
    4146                   PassOwnPtr<Vector<String> > whitelist, PassOwnPtr<Vector<String> > blacklist,
    42                    UserContentInjectedFrames injectedFrames)
     47                   UserContentInjectedFrames injectedFrames, Level level)
    4348        : m_source(source)
    4449        , m_url(url)
     
    4651        , m_blacklist(blacklist)
    4752        , m_injectedFrames(injectedFrames)
     53        , m_level(level)
    4854    {
    4955    }
     
    5460    const Vector<String>* blacklist() const { return m_blacklist.get(); }
    5561    UserContentInjectedFrames injectedFrames() const { return m_injectedFrames; }
     62    Level level() const { return m_level; }
    5663
    5764private:
     
    6168    OwnPtr<Vector<String> > m_blacklist;
    6269    UserContentInjectedFrames m_injectedFrames;
     70    Level m_level;
    6371};
    6472
  • trunk/WebKit/chromium/ChangeLog

    r65251 r65273  
     12010-08-12  Aaron Boodman  <aa@chromium.org>
     2
     3        Reviewed by David Hyatt.
     4
     5        Make the cascade level of "user" styles configurable
     6        https://bugs.webkit.org/show_bug.cgi?id=43457
     7
     8        * src/WebViewImpl.cpp:
     9        (WebKit::WebView::addUserStyleSheet):
     10
    1112010-08-12  John Gregg  <johnnyg@google.com>
    212
  • trunk/WebKit/chromium/src/WebViewImpl.cpp

    r65193 r65273  
    19501950    PageGroup* pageGroup = PageGroup::pageGroup(pageGroupName);
    19511951    RefPtr<DOMWrapperWorld> world(DOMWrapperWorld::create());
     1952
     1953    // FIXME: Current callers always want the level to be "author". It probably makes sense to let
     1954    // callers specify this though, since in other cases the caller will probably want "user" level.
     1955    //
     1956    // FIXME: It would be nice to populate the URL correctly, instead of passing an empty URL.
    19521957    pageGroup->addUserStyleSheetToWorld(world.get(), sourceCode, WebURL(), patterns.release(), 0,
    1953                                         static_cast<UserContentInjectedFrames>(injectIn));
     1958                                        static_cast<UserContentInjectedFrames>(injectIn),
     1959                                        UserStyleSheet::AuthorLevel);
    19541960}
    19551961
Note: See TracChangeset for help on using the changeset viewer.