diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-05-23 11:24:03 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2016-06-01 16:56:23 +0000 |
commit | 4a94a13d54dbaf32e7ac34cdee6e207fe5478286 (patch) | |
tree | 107bcf735b559024bfc4121d23071cea27ac05d4 /src/core/renderer/user_resource_controller.h | |
parent | 9d94e3ad9a1f3cf215d267c4b43ce74d57c54b2b (diff) |
Fix early JavaScript injection
With the latest Chromium snapshot we can no longer install any
javascript before a new callback called RunScriptsAtDocumentStart has
been called. So we must refactor user-scripts and web-channels to
install on this call instead.
Change-Id: I440a0aa4b26100c650d5c678b454ea5beb6b59d2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/core/renderer/user_resource_controller.h')
-rw-r--r-- | src/core/renderer/user_resource_controller.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/core/renderer/user_resource_controller.h b/src/core/renderer/user_resource_controller.h index bd3d0ba49..8eba12abc 100644 --- a/src/core/renderer/user_resource_controller.h +++ b/src/core/renderer/user_resource_controller.h @@ -48,11 +48,15 @@ #include <QtCore/QHash> #include <QtCore/QSet> +namespace blink { +class WebLocalFrame; +} + namespace content { +class RenderFrame; class RenderView; } - class UserResourceController : public content::RenderProcessObserver { public: @@ -64,22 +68,29 @@ public: void removeScriptForView(const UserScriptData &, content::RenderView *); void clearScriptsForView(content::RenderView *); + void RunScriptsAtDocumentStart(content::RenderFrame *render_frame); + void RunScriptsAtDocumentEnd(content::RenderFrame *render_frame); + private: Q_DISABLE_COPY(UserResourceController) class RenderViewObserverHelper; // RenderProcessObserver implementation. - virtual bool OnControlMessageReceived(const IPC::Message &message) Q_DECL_OVERRIDE; + bool OnControlMessageReceived(const IPC::Message &message) override; void onAddScript(const UserScriptData &); void onRemoveScript(const UserScriptData &); void onClearScripts(); + void runScripts(UserScriptData::InjectionPoint, blink::WebLocalFrame *); + typedef QSet<uint64_t> UserScriptSet; typedef QHash<const content::RenderView *, UserScriptSet> ViewUserScriptMap; ViewUserScriptMap m_viewUserScriptMap; QHash<uint64_t, UserScriptData> m_scripts; + + friend class RenderViewObserverHelper; }; #endif // USER_RESOURCE_CONTROLLER_H |