Add early-injection capability to user scripts.

Review URL: http://codereview.chromium.org/19624

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9822 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index bbe14c43..a8adb2f91 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -1454,15 +1454,9 @@
   // Check whether we have new encoding name.
   UpdateEncoding(frame, webview->GetMainFrameEncodingName());
 
-  // Inject any user scripts. Do not inject into chrome UI pages, but do inject
-  // into any other document.
-  const GURL &gurl = frame->GetURL();
-  if (g_render_thread &&  // Will be NULL when testing.
-      (gurl.SchemeIs("file") ||
-       gurl.SchemeIs("http") ||
-       gurl.SchemeIs("https"))) {
-    g_render_thread->user_script_slave()->InjectScripts(frame);
-  }
+  if (g_render_thread)  // Will be NULL during unit tests.
+    g_render_thread->user_script_slave()->InjectScripts(
+        frame, UserScript::DOCUMENT_END);
 }
 
 void RenderView::DidHandleOnloadEventsForFrame(WebView* webview,
@@ -1530,6 +1524,12 @@
 #endif
 }
 
+void RenderView::DocumentElementAvailable(WebFrame* frame) {
+  if (g_render_thread)  // Will be NULL during unit tests.
+    g_render_thread->user_script_slave()->InjectScripts(
+        frame, UserScript::DOCUMENT_START);
+}
+
 WindowOpenDisposition RenderView::DispositionForNavigationAction(
     WebView* webview,
     WebFrame* frame,