diff options
| author | Stephen Blott | 2014-12-29 17:28:37 +0000 |
|---|---|---|
| committer | Stephen Blott | 2014-12-29 17:28:37 +0000 |
| commit | f7541ed966859ae893600f5cfd17a1965efd0822 (patch) | |
| tree | 386ac078c3d08c2dba9c6b0a11b49cf0063ed382 /pages | |
| parent | 6c1bbf0ab5781951364464c5fa68ad22f74c9fee (diff) | |
| parent | 7499675455941251eaa69c93e7c66bfb1c6ae35c (diff) | |
| download | vimium-f7541ed966859ae893600f5cfd17a1965efd0822.tar.bz2 | |
Merge branch 'smblott-uicomponent-iframe' into post-1.46-with-uicomponent-iframe
Conflicts:
content_scripts/vimium_frontend.coffee
manifest.json
Diffstat (limited to 'pages')
| -rw-r--r-- | pages/test_ui_component.coffee | 8 | ||||
| -rw-r--r-- | pages/test_ui_component.html | 11 | ||||
| -rw-r--r-- | pages/ui_component_server.coffee | 27 |
3 files changed, 46 insertions, 0 deletions
diff --git a/pages/test_ui_component.coffee b/pages/test_ui_component.coffee new file mode 100644 index 00000000..e140fb14 --- /dev/null +++ b/pages/test_ui_component.coffee @@ -0,0 +1,8 @@ +UIComponentServer.registerHandler (event) -> + document.body.innerHTML = event.data + +window.addEventListener "keydown", (event) -> + if KeyboardUtils.isEscape event + UIComponentServer.postMessage "hide" + else + UIComponentServer.postMessage event.keyCode diff --git a/pages/test_ui_component.html b/pages/test_ui_component.html new file mode 100644 index 00000000..06af346c --- /dev/null +++ b/pages/test_ui_component.html @@ -0,0 +1,11 @@ +<html> + <head> + <title>Test</title> + <script type="text/javascript" src="../lib/keyboard_utils.js"></script> + <script type="text/javascript" src="ui_component_server.js"></script> + <script type="text/javascript" src="test_ui_component.js"></script> + <link rel="stylesheet" type="text/css" href="../content_scripts/vimium.css" /> + </head> + <body> + </body> +</html> diff --git a/pages/ui_component_server.coffee b/pages/ui_component_server.coffee new file mode 100644 index 00000000..8b43095b --- /dev/null +++ b/pages/ui_component_server.coffee @@ -0,0 +1,27 @@ + +# Fetch the Vimium secret, register the port recieved from the parent window, and stop listening for messages +# on the window object. vimiumSecret is accessible only within the current instantion of Vimium. So a +# malicious host page trying to register its own port can do no better than guessing. +registerPort = (event) -> + chrome.storage.local.get "vimiumSecret", ({vimiumSecret: secret}) -> + return unless event.source == window.parent and event.data == secret + UIComponentServer.portOpen event.ports[0] + window.removeEventListener "message", registerPort + +window.addEventListener "message", registerPort + +UIComponentServer = + ownerPagePort: null + handleMessage: null + + portOpen: (@ownerPagePort) -> + @ownerPagePort.onmessage = (event) => + @handleMessage event if @handleMessage + + registerHandler: (@handleMessage) -> + + postMessage: (message) -> + @ownerPagePort.postMessage message if @ownerPagePort + +root = exports ? window +root.UIComponentServer = UIComponentServer |
