summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-16 23:25:27 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-16 23:25:27 +0000
commit4aca1ba4b4e571d389720710ca7964445bd1d5ac (patch)
treef1667f75091304a84928279b8d030486df860956 /chrome/renderer
parent92a68c6423124d6f73739d24d294df531d2cc621 (diff)
downloadchromium_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.cc15
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())