Chromium Code Reviews| Index: ios/web/web_state/js/resources/message_dynamic_ui.js |
| diff --git a/ios/web/web_state/js/resources/message_dynamic_ui.js b/ios/web/web_state/js/resources/message_dynamic_ui.js |
| index d3118141228e161eaf01fabbea36d46c55866598..6d5b1844ff43c4a94041a51f6ccf6174aeb1cd0f 100644 |
| --- a/ios/web/web_state/js/resources/message_dynamic_ui.js |
| +++ b/ios/web/web_state/js/resources/message_dynamic_ui.js |
| @@ -20,23 +20,34 @@ new function() { |
| * @param {Object} queueObject Queue object containing messages to send. |
| */ |
| __gCrWeb.message_dynamic.sendQueue = function(queueObject) { |
| - // The technique requires the document to be present. If it is not, the |
| - // messages will be sent once the document object is created. |
| - if (!document || !document.body) { |
| - // This happens in rare occasions early in the page cycle. It is |
| - // possible to create a body element indirectly here, but it has side |
| - // effects such as blocking page redirection. The safest solution is to |
| - // try again in 1/10th of a second. |
| - window.setTimeout(__gCrWeb.message.invokeQueues, 100); |
| - return; |
| - } |
| + var send = function() { |
| + // The technique requires the document to be present. If it is not, the |
| + // messages will be sent once the document object is created. |
| + if (!document || !document.body) { |
| + // This happens in rare occasions early in the page cycle. It is |
| + // possible to create a body element indirectly here, but it has side |
| + // effects such as blocking page redirection. The safest solution is to |
| + // try again in 1/10th of a second. |
| + window.setTimeout(__gCrWeb.message.invokeQueues, 100); |
| + return; |
| + } |
| + |
| + var frame = document.createElement('iframe'); |
| + frame.style.display = 'none'; |
| + frame.src = queueObject.scheme + '://' + __gCrWeb.windowId + '#' + |
| + encodeURIComponent(__gCrWeb.common.JSONStringify(queueObject.queue)); |
| + queueObject.reset(); |
| + document.body.appendChild(frame); |
| + document.body.removeChild(frame); |
| + }; |
| - var frame = document.createElement('iframe'); |
| - frame.style.display = 'none'; |
| - frame.src = queueObject.scheme + '://' + __gCrWeb.windowId + '#' + |
| - encodeURIComponent(__gCrWeb.common.JSONStringify(queueObject.queue)); |
| - queueObject.reset(); |
| - document.body.appendChild(frame); |
| - document.body.removeChild(frame); |
| + // The Apple mobile password recovery page does not interact well with |
| + // iframes, so on pages with the 'iforgot.apple.com' domain, delay sending |
| + // the queue. |
| + if (window.location.origin === "https://iforgot.apple.com") { |
|
stuartmorgan
2015/05/18 19:57:08
Let's do a bit of combination self-documentation a
Jackie Quinn
2015/05/18 20:36:42
Done.
|
| + window.setTimeout(send, 150); |
| + } else { |
| + send(); |
| + } |
| }; |
| } |