<html>
<body>
<a id="some_link" href="google.html" target="_blank">Click Here</a>
</body>
<script>
// The proto received on last update postmessage. Reset on getLastReceivedCompanionProto().
lastReceivedCompanionProto = null;
// The url received on last NotifyLinkOpen postmessage.
lastReceivedLinkOpenedUrl = null;
// The metadata for the last URL received on the NotifyLinkOpen postmessage.
lastReceivedLinkOpenedMetadata = null;
// The page title received on last UpdatePageTitle postmessage.
lastReceivedPageTitle = null;
// The innerHtml received on last UpdateInnerHtml postmessage.
lastReceivedInnerHtml = null;
// Promise to be returned to for browser tests when the test needs to wait
// for a postmessage call from the browser to be received by the companion
// page.
var promiseResolve, promiseReject;
var promise = new Promise(function (resolve, reject) {
promiseResolve = resolve;
promiseReject = reject;
});
// Postmessage from browser.
function onBrowserMessage(event) {
if (event.data['type'] == 31) { // `MethodType.kUpdateCompanionPage`
window.lastReceivedCompanionProto = event.data['companionUpdateParams'];
promiseResolve(event.data['companionUpdateParams']);
} else if (event.data['type'] == 32) { // `MethodType.kOnCqFindTextResultsAvailable`
promiseResolve(event.data['cqTextFindResults']);
} else if (event.data['type'] == 33) { // `MethodType.kOnDeviceVisualClassificationResult`
promiseResolve(event.data['visualSearchParams']);
} else if (event.data['type'] == 34) { // `MethodType.kNotifyLinkOpen`
window.lastReceivedLinkOpenedUrl = event.data['openedUrl'];
window.lastReceivedLinkOpenedMetadata = event.data['openMetadata'];
promiseResolve(event.data['openedUrl']);
} else if (event.data['type'] == 35) { // `MethodType.kUpdatePageContent`
window.lastReceivedPageTitle = event.data['pageTitle'];
window.lastReceivedInnerHtml = event.data['innerHtml'];
promiseResolve();
}
}
function getLastReceivedCompanionProto() {
protoCopy = window.lastReceivedCompanionProto;
window.lastReceivedCompanionProto = null;
return protoCopy;
}
function getLastReceivedLinkOpenedUrl() {
return window.lastReceivedLinkOpenedUrl;
}
function getLastReceivedLinkOpenedMetadata() {
return JSON.stringify(window.lastReceivedLinkOpenedMetadata);
}
function getLastReceivedPageTitle() {
return window.lastReceivedPageTitle;
}
function getLastReceivedInnerHtml() {
return window.lastReceivedInnerHtml;
}
function waitForMessage() {
return promise;
}
window.addEventListener('message', onBrowserMessage, false);
</script>
</html>