Changeset 48912 in webkit


Ignore:
Timestamp:
Sep 29, 2009 5:32:38 PM (15 years ago)
Author:
hyatt@apple.com
Message:

https://bugs.webkit.org/show_bug.cgi?id=29892
Add support for whitelist patterns to control conditional injection of user scripts and
user stylesheets.

Reviewed by Jon Honeycutt.

No new tests. Not testable until WebKit portion is added in followup patch.

  • GNUmakefile.am:
  • WebCore.gypi:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::pageGroupUserSheets):

  • page/Frame.cpp:

(WebCore::Frame::injectUserScriptsForWorld):

  • page/UserContentURLPattern.cpp: Added.

(WebCore::UserContentURLPattern::matchesPatterns):
(WebCore::UserContentURLPattern::parse):
(WebCore::UserContentURLPattern::matches):
(WebCore::UserContentURLPattern::matchesHost):
(WebCore::MatchTester::MatchTester):
(WebCore::MatchTester::testStringFinished):
(WebCore::MatchTester::patternStringFinished):
(WebCore::MatchTester::eatWildcard):
(WebCore::MatchTester::eatSameChars):
(WebCore::MatchTester::test):
(WebCore::UserContentURLPattern::matchesPath):

  • page/UserContentURLPattern.h: Added.

(WebCore::UserContentURLPattern::UserContentURLPattern):
(WebCore::UserContentURLPattern::scheme):
(WebCore::UserContentURLPattern::host):
(WebCore::UserContentURLPattern::path):
(WebCore::UserContentURLPattern::matchSubdomains):

Location:
trunk/WebCore
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r48910 r48912  
     12009-09-29  Dave Hyatt  <hyatt@apple.com>
     2
     3        Reviewed by Jon Honeycutt.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=29892
     6        Add support for whitelist patterns to control conditional injection of user scripts and
     7        user stylesheets.
     8
     9        No new tests. Not testable until WebKit portion is added in followup patch.
     10
     11        * GNUmakefile.am:
     12        * WebCore.gypi:
     13        * WebCore.pro:
     14        * WebCore.vcproj/WebCore.vcproj:
     15        * WebCore.xcodeproj/project.pbxproj:
     16        * dom/Document.cpp:
     17        (WebCore::Document::pageGroupUserSheets):
     18        * page/Frame.cpp:
     19        (WebCore::Frame::injectUserScriptsForWorld):
     20        * page/UserContentURLPattern.cpp: Added.
     21        (WebCore::UserContentURLPattern::matchesPatterns):
     22        (WebCore::UserContentURLPattern::parse):
     23        (WebCore::UserContentURLPattern::matches):
     24        (WebCore::UserContentURLPattern::matchesHost):
     25        (WebCore::MatchTester::MatchTester):
     26        (WebCore::MatchTester::testStringFinished):
     27        (WebCore::MatchTester::patternStringFinished):
     28        (WebCore::MatchTester::eatWildcard):
     29        (WebCore::MatchTester::eatSameChars):
     30        (WebCore::MatchTester::test):
     31        (WebCore::UserContentURLPattern::matchesPath):
     32        * page/UserContentURLPattern.h: Added.
     33        (WebCore::UserContentURLPattern::UserContentURLPattern):
     34        (WebCore::UserContentURLPattern::scheme):
     35        (WebCore::UserContentURLPattern::host):
     36        (WebCore::UserContentURLPattern::path):
     37        (WebCore::UserContentURLPattern::matchSubdomains):
     38
    1392009-09-29  Enrica Casucci  <enrica@apple.com>
    240
  • trunk/WebCore/GNUmakefile.am

    r48826 r48912  
    13501350        WebCore/page/Settings.cpp \
    13511351        WebCore/page/Settings.h \
     1352        WebCore/page/UserContentURLPattern.cpp \
     1353        WebCore/page/UserContentURLPattern.h \
    13521354        WebCore/page/UserScript.h \
    13531355        WebCore/page/UserScriptTypes.h \
  • trunk/WebCore/WebCore.gypi

    r48892 r48912  
    17701770            'page/Settings.cpp',
    17711771            'page/Settings.h',
     1772            'page/UserContentURLPattern.cpp',
     1773            'page/UserContentURLPattern.h',
    17721774            'page/UserScript.h',
    17731775            'page/UserScriptTypes.h',
  • trunk/WebCore/WebCore.pro

    r48826 r48912  
    11481148    page/Screen.cpp \
    11491149    page/Settings.cpp \
     1150    page/UserContentURLPattern.cpp \
    11501151    page/WindowFeatures.cpp \
    11511152    page/XSSAuditor.cpp \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r48826 r48912  
    1707517075                        <File
    1707617076                                RelativePath="..\page\Settings.h"
     17077                                >
     17078                        </File>
     17079                        <File
     17080                                RelativePath="..\page\UserContentURLPattern.cpp"
     17081                                >
     17082                        </File>
     17083                        <File
     17084                                RelativePath="..\page\UserContentURLPattern.h"
    1707717085                                >
    1707817086                        </File>
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r48832 r48912  
    43084308                BCA85A100C3AEAF4006F8308 /* DOMSVGNumberInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA85A0F0C3AEAF4006F8308 /* DOMSVGNumberInternal.h */; };
    43094309                BCAA90C30A7EBA60008B1229 /* Scrollbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */; };
     4310                BCACF3BC1072921A00C0C8A3 /* UserContentURLPattern.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */; };
     4311                BCACF3BD1072921A00C0C8A3 /* UserContentURLPattern.h in Headers */ = {isa = PBXBuildFile; fileRef = BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */; };
    43104312                BCAEFCAE1016CE4A0040D34E /* DOMRGBColor.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCAEFCAD1016CE4A0040D34E /* DOMRGBColor.mm */; };
    43114313                BCB16C170979C3BD00467741 /* Cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB16BFE0979C3BD00467741 /* Cache.cpp */; };
     
    93959397                BCA85A0F0C3AEAF4006F8308 /* DOMSVGNumberInternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DOMSVGNumberInternal.h; sourceTree = "<group>"; };
    93969398                BCAA90C20A7EBA60008B1229 /* Scrollbar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Scrollbar.cpp; path = platform/Scrollbar.cpp; sourceTree = SOURCE_ROOT; };
     9399                BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserContentURLPattern.cpp; sourceTree = "<group>"; };
     9400                BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserContentURLPattern.h; sourceTree = "<group>"; };
    93979401                BCAEFCAD1016CE4A0040D34E /* DOMRGBColor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMRGBColor.mm; sourceTree = "<group>"; };
    93989402                BCB16BFE0979C3BD00467741 /* Cache.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = Cache.cpp; sourceTree = "<group>"; };
     
    1109911103                                14C9A5E90B3D105F005A0232 /* Settings.cpp */,
    1110011104                                F587863A02DE3A1401EA4122 /* Settings.h */,
     11105                                BCACF3BA1072921A00C0C8A3 /* UserContentURLPattern.cpp */,
     11106                                BCACF3BB1072921A00C0C8A3 /* UserContentURLPattern.h */,
    1110111107                                BCA2B0601050475F0043BD1C /* UserScript.h */,
    1110211108                                BCA2B08A10505BCD0043BD1C /* UserScriptTypes.h */,
     
    1790517911                                7693BAD4106C2DCA007B0823 /* PluginHalter.h in Headers */,
    1790617912                                7693BAD5106C2DCA007B0823 /* PluginHalterClient.h in Headers */,
     17913                                BCACF3BD1072921A00C0C8A3 /* UserContentURLPattern.h in Headers */,
    1790717914                                5DB1BC6A10715A6400EFAA49 /* TransformSource.h in Headers */,
    1790817915                        );
     
    2001920026                                14CD8D82106B529000A46D23 /* JSSharedWorkerCustom.cpp in Sources */,
    2002020027                                7693BAD3106C2DCA007B0823 /* PluginHalter.cpp in Sources */,
     20028                                BCACF3BC1072921A00C0C8A3 /* UserContentURLPattern.cpp in Sources */,
    2002120029                                5DB1BC6B10715A6400EFAA49 /* TransformSourceLibxslt.cpp in Sources */,
    2002220030                        );
  • trunk/WebCore/dom/Document.cpp

    r48826 r48912  
    120120#include "TreeWalker.h"
    121121#include "UIEvent.h"
     122#include "UserContentURLPattern.h"
    122123#include "WebKitAnimationEvent.h"
    123124#include "WebKitTransitionEvent.h"
     
    19691970        for (unsigned i = 0; i < sheets->size(); ++i) {
    19701971            const UserStyleSheet* sheet = sheets->at(i).get();
     1972            if (!UserContentURLPattern::matchesPatterns(url(), sheet->patterns()))
     1973                continue;
    19711974            RefPtr<CSSStyleSheet> parsedSheet = CSSStyleSheet::create(const_cast<Document*>(this), sheet->url());
    19721975            parsedSheet->setIsUserStyleSheet(true);
  • trunk/WebCore/page/Frame.cpp

    r48701 r48912  
    7474#include "TextIterator.h"
    7575#include "TextResourceDecoder.h"
     76#include "UserContentURLPattern.h"
    7677#include "XMLNames.h"
    7778#include "htmlediting.h"
     
    871872        return;
    872873
     874    Document* doc = document();
     875    if (!doc)
     876        return;
     877
    873878    // FIXME: Need to implement pattern checking.
    874879    Vector<ScriptSourceCode> sourceCode;
     
    876881    for (unsigned i = 0; i < count; ++i) {
    877882        UserScript* script = userScripts[i].get();
    878         if (script->injectionTime() == injectionTime)
     883        if (script->injectionTime() == injectionTime && UserContentURLPattern::matchesPatterns(doc->url(), script->patterns()))
    879884            sourceCode.append(ScriptSourceCode(script->source(), script->url()));
    880885    }
Note: See TracChangeset for help on using the changeset viewer.