| Index: native_client_sdk/src/build_tools/screenshot_extension/injected.js
|
| diff --git a/native_client_sdk/src/build_tools/screenshot_extension/injected.js b/native_client_sdk/src/build_tools/screenshot_extension/injected.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f90e233b67896a22dd64989222f57be60d739e85
|
| --- /dev/null
|
| +++ b/native_client_sdk/src/build_tools/screenshot_extension/injected.js
|
| @@ -0,0 +1,75 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Only inject once.
|
| +if (!document.body.getAttribute('screenshot_extension_injected')) {
|
| + document.body.setAttribute('screenshot_extension_injected', true);
|
| + (function() {
|
| +
|
| + // Bounce message from webpage to background page.
|
| + //
|
| + // Expecting a message called with:
|
| + // window.postMessage({
|
| + // id: <a value that is passed back unchanged to the response for
|
| + // identification>,
|
| + // target: 'background'
|
| + // }, '*');
|
| + //
|
| + // When the screenshot is captured, a message will be posted to the window.
|
| + // Listen for it like this:
|
| + //
|
| + // window.addEventListener('message', function(event) {
|
| + // if (event.source !== window)
|
| + // return;
|
| + //
|
| + // if (event.data.target !== 'page')
|
| + // return;
|
| + //
|
| + // // event.data is an object:
|
| + // // {
|
| + // // id: <the id passed to the request>,
|
| + // // target: 'page',
|
| + // // data: <a data URI of MIMEtype image/png with the tab screenshot>
|
| + // // }
|
| + // //
|
| + // // or if there is an error:
|
| + // //
|
| + // // {
|
| + // // id: <the id passed to the request>,
|
| + // // target: 'page',
|
| + // // error: <an error string>
|
| + // // }
|
| + // }, false);
|
| + //
|
| + window.addEventListener('message', function(event) {
|
| + if (event.source !== window)
|
| + return;
|
| +
|
| + // Ignore messages not destined for the background page.
|
| + if (event.data.target !== 'background')
|
| + return;
|
| +
|
| + var id = event.data.id;
|
| + console.log('sending message: id=' + id);
|
| +
|
| + chrome.runtime.sendMessage(null, {},
|
| + function(responseData) {
|
| + // Bounce response from background page back to webpage.
|
| + var lastError = chrome.runtime.lastError;
|
| + if (lastError) {
|
| + console.log('lastError: ' + lastError);
|
| +
|
| + window.postMessage({id: id, target: 'page', error: lastError},
|
| + '*');
|
| + return;
|
| + }
|
| +
|
| + console.log('received response: id=' + id);
|
| +
|
| + window.postMessage({id: id, target: 'page', data: responseData},
|
| + '*');
|
| + });
|
| + }, false);
|
| + })();
|
| +}
|
|
|