diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-16 23:25:27 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-16 23:25:27 +0000 |
commit | 4aca1ba4b4e571d389720710ca7964445bd1d5ac (patch) | |
tree | f1667f75091304a84928279b8d030486df860956 /chrome/renderer | |
parent | 92a68c6423124d6f73739d24d294df531d2cc621 (diff) | |
download | chromium_src-4aca1ba4b4e571d389720710ca7964445bd1d5ac.zip chromium_src-4aca1ba4b4e571d389720710ca7964445bd1d5ac.tar.gz chromium_src-4aca1ba4b4e571d389720710ca7964445bd1d5ac.tar.bz2 |
Revert 50050 - Revert r48693: This broke existing extensions that wanted to run script on XML
pages. For more info, see: http://code.google.com/p/chromium/issues/detail?id=39845#c7
TBR=rafaelw@chromium.org
TBR=aa@chromium.org
Review URL: http://codereview.chromium.org/2812006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50051 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/user_script_slave.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/chrome/renderer/user_script_slave.cc b/chrome/renderer/user_script_slave.cc index 4015484..25a272b 100644 --- a/chrome/renderer/user_script_slave.cc +++ b/chrome/renderer/user_script_slave.cc @@ -18,6 +18,8 @@ #include "chrome/renderer/extension_groups.h" #include "chrome/renderer/render_thread.h" #include "googleurl/src/gurl.h" +#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" +#include "third_party/WebKit/WebKit/chromium/public/WebElement.h" #include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" #include "grit/renderer_resources.h" @@ -149,6 +151,19 @@ bool UserScriptSlave::InjectScripts(WebFrame* frame, if (!URLPattern::IsValidScheme(frame_url.scheme())) return true; + // Only inject user scripts into documents with an <html> tag as the root + // element. Note that WebCore fixes up html pages that lack a root HTML + // element so that they include one. Also, documents like text/plain and + // image/* are wrapped in a simple HTML document. + // + // Basically, this check filters out SVG documents and other types of XML + // documents. + if (frame->document().isNull() || + frame->document().documentElement().isNull() || + !frame->document().documentElement().hasTagName("html")) { + return true; + } + // Don't inject user scripts into the gallery itself. This prevents // a user script from removing the "report abuse" link, for example. if (frame_url.host() == GURL(extension_urls::kGalleryBrowsePrefix).host()) |