diff options
| author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-02-04 19:27:22 +0900 | 
|---|---|---|
| committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-02-04 19:27:22 +0900 | 
| commit | f6f64297aa030cd3fbad4bbb9e322e469bc762e8 (patch) | |
| tree | 02ad2374c6e7060c7f13658e7dd4c3c0d99b5b9f /e2e/ambassador/src/content | |
| parent | bb5b6d367cdd19a1d81c78cf8a79c47520ca469e (diff) | |
first webextension test
Diffstat (limited to 'e2e/ambassador/src/content')
| -rw-r--r-- | e2e/ambassador/src/content/index.js | 11 | ||||
| -rw-r--r-- | e2e/ambassador/src/content/ipc.js | 31 | 
2 files changed, 42 insertions, 0 deletions
diff --git a/e2e/ambassador/src/content/index.js b/e2e/ambassador/src/content/index.js index e69de29..dd46688 100644 --- a/e2e/ambassador/src/content/index.js +++ b/e2e/ambassador/src/content/index.js @@ -0,0 +1,11 @@ +import { WINDOWS_CREATE, WINDOWS_REMOVE } from '../shared/messages'; +import * as ipc from './ipc'; + +ipc.receivePageMessage((message) => { +  switch (message.type) { +  case WINDOWS_CREATE: +    return ipc.send(message); +  case WINDOWS_REMOVE: +    return ipc.send(message); +  } +}); diff --git a/e2e/ambassador/src/content/ipc.js b/e2e/ambassador/src/content/ipc.js new file mode 100644 index 0000000..62fcac1 --- /dev/null +++ b/e2e/ambassador/src/content/ipc.js @@ -0,0 +1,31 @@ +import { METHOD_REQUEST, METHOD_RESPONSE } from '../shared/messages'; + +const send = (message) => { +  return browser.runtime.sendMessage(message); +}; + +const receivePageMessage = (func) => { +  window.addEventListener('message', (e) => { +    let packet = e.data; +    if (e.origin !== window.origin || packet.method !== METHOD_REQUEST) { +      return; +    } + +    let resp = { +      id: packet.id, +      method: METHOD_RESPONSE, +    }; +    let respMessage = func(packet.message); +    if (respMessage instanceof Promise) { +      return respMessage.then((data) => { +        resp.message = data; +        e.source.postMessage(resp, e.origin); +      }); +    } else if (respMessage) { +      resp.message = respMessage; +    } +    e.source.postMessage(resp, e.origin); +  }); +}; + +export { send, receivePageMessage };  | 
