summaryrefslogtreecommitdiffstats
path: root/src/core/renderer/user_resource_controller.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2016-05-23 11:24:03 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2016-06-01 16:56:23 +0000
commit4a94a13d54dbaf32e7ac34cdee6e207fe5478286 (patch)
tree107bcf735b559024bfc4121d23071cea27ac05d4 /src/core/renderer/user_resource_controller.h
parent9d94e3ad9a1f3cf215d267c4b43ce74d57c54b2b (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.h15
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