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

Unified Diff: extensions/renderer/script_injection_manager.cc

Issue 2633253002: Split content script injections into multiple tasks (Closed)
Patch Set: Inject document_idle scripts before window.onload Created 3 years, 10 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: extensions/renderer/script_injection_manager.cc
diff --git a/extensions/renderer/script_injection_manager.cc b/extensions/renderer/script_injection_manager.cc
index 1e872e245909748d0ffef6b0814f5ea2117c400c..7c51400233ddd5f0a8dcaf265f647d041acd70ad 100644
--- a/extensions/renderer/script_injection_manager.cc
+++ b/extensions/renderer/script_injection_manager.cc
@@ -20,6 +20,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/extension_messages.h"
#include "extensions/common/extension_set.h"
+#include "extensions/common/feature_switch.h"
#include "extensions/renderer/extension_frame_helper.h"
#include "extensions/renderer/extension_injection_host.h"
#include "extensions/renderer/programmatic_script_injector.h"
@@ -189,15 +190,23 @@ void ScriptInjectionManager::RFOHelper::DidFinishDocumentLoad() {
base::Bind(&ScriptInjectionManager::RFOHelper::RunIdle,
weak_factory_.GetWeakPtr()),
base::TimeDelta::FromMilliseconds(kScriptIdleTimeoutInMs));
+
+ if (FeatureSwitch::yield_between_content_script_runs()->IsEnabled()) {
+ ExtensionFrameHelper::Get(render_frame())->ScheduleAtDocumentIdle(
+ base::Bind(&ScriptInjectionManager::RFOHelper::RunIdle,
+ weak_factory_.GetWeakPtr()));
+ }
}
void ScriptInjectionManager::RFOHelper::DidFinishLoad() {
DCHECK(content::RenderThread::Get());
- // Ensure that we don't block any UI progress by running scripts.
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE,
- base::Bind(&ScriptInjectionManager::RFOHelper::RunIdle,
- weak_factory_.GetWeakPtr()));
+ if (!FeatureSwitch::yield_between_content_script_runs()->IsEnabled()) {
+ // Ensure that we don't block any UI progress by running scripts.
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&ScriptInjectionManager::RFOHelper::RunIdle,
+ weak_factory_.GetWeakPtr()));
+ }
}
void ScriptInjectionManager::RFOHelper::FrameDetached() {

Powered by Google App Engine
This is Rietveld 408576698