Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(930)

Unified Diff: chrome/renderer/extensions/user_script_scheduler.h

Issue 9456037: Adding run_at to chrome.tabs.executeScript/insertCss. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/extensions/user_script_scheduler.h
diff --git a/chrome/renderer/extensions/user_script_idle_scheduler.h b/chrome/renderer/extensions/user_script_scheduler.h
similarity index 62%
rename from chrome/renderer/extensions/user_script_idle_scheduler.h
rename to chrome/renderer/extensions/user_script_scheduler.h
index 782ce86974ea446e93b2fb9afcf73a0383dfe212..b459fe3bd53b480f97cf469fec37a7014f072db4 100644
--- a/chrome/renderer/extensions/user_script_idle_scheduler.h
+++ b/chrome/renderer/extensions/user_script_scheduler.h
@@ -2,13 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_IDLE_SCHEDULER_H_
-#define CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_IDLE_SCHEDULER_H_
+#ifndef CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_SCHEDULER_H_
+#define CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_SCHEDULER_H_
#pragma once
+#include <map>
#include <queue>
-#include <vector>
+#include "chrome/common/extensions/user_script.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/weak_ptr.h"
@@ -20,9 +21,12 @@ namespace WebKit {
class WebFrame;
}
-// Implements support for injecting scripts at "document idle". Currently,
-// determining idleness is simple: it is whichever of the following happens
-// first:
+// Implements support for injecting scripts at different times in the document
+// loading process. The different possible time are described in
+// UserScript::RunLocation.
+//
+// Currently, determining idleness is simple: it is whichever of the following
+// happens first:
//
// a) When the initial DOM for a page is complete + kUserScriptIdleTimeout,
// b) or when the page has completely loaded including all subresources.
@@ -36,18 +40,23 @@ class WebFrame;
// RenderViews thanks to adoptNode. So we have each RenderView's
// ExtensionHelper proxy these calls to the renderer process'
// ExtensionDispatcher, which contains the mapping from WebFrame to us.
-class UserScriptIdleScheduler {
+class UserScriptScheduler {
public:
- UserScriptIdleScheduler(WebKit::WebFrame* frame,
+ UserScriptScheduler(WebKit::WebFrame* frame,
ExtensionDispatcher* extension_dispatcher);
- ~UserScriptIdleScheduler();
+ ~UserScriptScheduler();
void ExecuteCode(const ExtensionMsg_ExecuteCode_Params& params);
+ void DidCreateDocumentElement();
void DidFinishDocumentLoad();
void DidFinishLoad();
void DidStartProvisionalLoad();
private:
+ typedef
+ std::queue<linked_ptr<ExtensionMsg_ExecuteCode_Params> >
+ ExecutionQueue;
+
// Run user scripts, except if they've already run for this frame, or the
// frame has been destroyed.
void MaybeRun();
@@ -60,19 +69,25 @@ class UserScriptIdleScheduler {
bool GetAllChildFrames(WebKit::WebFrame* parent_frame,
std::vector<WebKit::WebFrame*>* frames_vector) const;
- base::WeakPtrFactory<UserScriptIdleScheduler> weak_factory_;
+ // Call to signify thet the idle timeout has expired.
+ void IdleTimeout();
+
+ base::WeakPtrFactory<UserScriptScheduler> weak_factory_;
// The Frame we will run scripts in.
WebKit::WebFrame* frame_;
- // Whether we have already run scripts.
- bool has_run_;
+ // The current location in the document loading process.
+ // Will be UserScript::UNDEFINED if it is before any scripts should be run.
+ UserScript::RunLocation current_location_;
+
+ // Whether we have already run the idle scripts.
+ bool has_run_idle_;
// This is only used if we're for the main frame.
- std::queue<linked_ptr<ExtensionMsg_ExecuteCode_Params> >
- pending_code_execution_queue_;
+ std::map<UserScript::RunLocation, ExecutionQueue> pending_execution_map_;
ExtensionDispatcher* extension_dispatcher_;
};
-#endif // CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_IDLE_SCHEDULER_H_
+#endif // CHROME_RENDERER_EXTENSIONS_USER_SCRIPT_SCHEDULER_H_
« no previous file with comments | « chrome/renderer/extensions/user_script_idle_scheduler.cc ('k') | chrome/renderer/extensions/user_script_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698