CB-7690 InAppBrowser loadstart/loadstop events issues

Subscribing to events before navigating
This commit is contained in:
daserge 2014-10-15 03:23:26 +04:00 committed by sgrebnov
parent 71b43d39a4
commit 3f80b0b59c
3 changed files with 22 additions and 13 deletions

View File

@ -120,14 +120,14 @@ var IAB = {
popup.style.width = "100%"; popup.style.width = "100%";
popup.style.height = "100%"; popup.style.height = "100%";
// start listening for navigation events
attachNavigationEvents(popup, win);
if (isWebViewAvailable) { if (isWebViewAvailable) {
strUrl = strUrl.replace("ms-appx://", "ms-appx-web://"); strUrl = strUrl.replace("ms-appx://", "ms-appx-web://");
} }
popup.src = strUrl; popup.src = strUrl;
// start listening for navigation events
attachNavigationEvents(popup, win);
browserWrap.appendChild(popup); browserWrap.appendChild(popup);
} }
}, },

View File

@ -29,11 +29,7 @@ exports.defineManualTests = function (contentEl, createActionButton) {
function doOpen(url, target, params, numExpectedRedirects) { function doOpen(url, target, params, numExpectedRedirects) {
numExpectedRedirects = numExpectedRedirects || 0; numExpectedRedirects = numExpectedRedirects || 0;
console.log("Opening " + url); console.log("Opening " + url);
var iab = window.open(url, target, params);
if (!iab) {
alert('window.open returned ' + iab);
return;
}
var counts; var counts;
var lastLoadStartURL; var lastLoadStartURL;
var wasReset = false; var wasReset = false;
@ -48,6 +44,17 @@ exports.defineManualTests = function (contentEl, createActionButton) {
} }
reset(); reset();
var iab = window.open(url, target, params, {
loaderror: logEvent,
loadstart: logEvent,
loadstop: logEvent,
exit: logEvent
});
if (!iab) {
alert('window.open returned ' + iab);
return;
}
function logEvent(e) { function logEvent(e) {
console.log('IAB event=' + JSON.stringify(e)); console.log('IAB event=' + JSON.stringify(e));
counts[e.type]++; counts[e.type]++;
@ -85,10 +92,6 @@ exports.defineManualTests = function (contentEl, createActionButton) {
} }
} }
} }
iab.addEventListener('loaderror', logEvent);
iab.addEventListener('loadstart', logEvent);
iab.addEventListener('loadstop', logEvent);
iab.addEventListener('exit', logEvent);
return iab; return iab;
} }

View File

@ -77,7 +77,7 @@ InAppBrowser.prototype = {
} }
}; };
module.exports = function(strUrl, strWindowName, strWindowFeatures) { module.exports = function(strUrl, strWindowName, strWindowFeatures, callbacks) {
// Don't catch calls that write to existing frames (e.g. named iframes). // Don't catch calls that write to existing frames (e.g. named iframes).
if (window.frames && window.frames[strWindowName]) { if (window.frames && window.frames[strWindowName]) {
var origOpenFunc = modulemapper.getOriginalSymbol(window, 'open'); var origOpenFunc = modulemapper.getOriginalSymbol(window, 'open');
@ -86,6 +86,12 @@ module.exports = function(strUrl, strWindowName, strWindowFeatures) {
strUrl = urlutil.makeAbsolute(strUrl); strUrl = urlutil.makeAbsolute(strUrl);
var iab = new InAppBrowser(); var iab = new InAppBrowser();
callbacks = callbacks || {};
for (var callbackName in callbacks) {
iab.addEventListener(callbackName, callbacks[callbackName]);
}
var cb = function(eventname) { var cb = function(eventname) {
iab._eventHandler(eventname); iab._eventHandler(eventname);
}; };