Roll src/third_party/WebKit eac3800:0237a66 (svn 202606:202607)
[chromium-blink-merge.git] / components / translate / ios / browser / resources / translate_ios.js
blob9dfda6a4cad253762a8704fedee98a436cc62f83
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 __gCrWeb['translate'] = {};
7 (function() {
8 /**
9  * The delay a wait performed (in milliseconds) before checking whether the
10  * translation has finished.
11  * @type {number}
12  */
13 __gCrWeb.translate.TRANSLATE_STATUS_CHECK_DELAY = 400;
15 /**
16  * The delay in milliseconds that we'll wait to check if a page has finished
17  * loading before attempting a translation.
18  * @type {number}
19  */
20 __gCrWeb.translate.TRANSLATE_LOAD_CHECK_DELAY = 150;
22 /**
23  * The maximum number of times a check is performed to see if the translate
24  * library injected in the page is ready.
25  * @type {number}
26  */
27 __gCrWeb.translate.MAX_TRANSLATE_INIT_CHECK_ATTEMPTS = 5;
29 // The number of times polling for the ready status of the translate script has
30 //  been performed.
31 var translationAttemptCount = 0;
33 /**
34  * Polls every TRANSLATE_LOAD_CHECK_DELAY milliseconds to check if the translate
35  * script is ready and informs the host when it is.
36  */
37 __gCrWeb.translate['checkTranslateReady'] = function() {
38   translationAttemptCount += 1;
39   if (cr.googleTranslate.libReady) {
40     translationAttemptCount = 0;
41     __gCrWeb.message.invokeOnHost({
42         'command': 'translate.ready',
43         'timeout': false,
44         'loadTime': cr.googleTranslate.loadTime,
45         'readyTime': cr.googleTranslate.readyTime});
46   } else if (translationAttemptCount >=
47              __gCrWeb.translate.MAX_TRANSLATE_INIT_CHECK_ATTEMPTS) {
48     __gCrWeb.message.invokeOnHost({
49         'command': 'translate.ready',
50         'timeout': true});
51   } else {
52     // The translation is still pending, check again later.
53     window.setTimeout(__gCrWeb.translate.checkTranslateReady,
54                       __gCrWeb.translate.TRANSLATE_LOAD_CHECK_DELAY);
55   }
58 /**
59  * Polls every TRANSLATE_STATUS_CHECK_DELAY milliseconds to check if translate
60  * is ready and informs the host when it is.
61  */
62 __gCrWeb.translate['checkTranslateStatus'] = function() {
63   if (cr.googleTranslate.error) {
64     __gCrWeb.message.invokeOnHost({'command': 'translate.status',
65                                    'success': false});
66   } else if (cr.googleTranslate.finished) {
67     __gCrWeb.message.invokeOnHost({
68         'command': 'translate.status',
69         'success': true,
70         'originalPageLanguage': cr.googleTranslate.sourceLang,
71         'translationTime': cr.googleTranslate.translationTime});
72   } else {
73     // The translation is still pending, check again later.
74     window.setTimeout(__gCrWeb.translate.checkTranslateStatus,
75                       __gCrWeb.translate.TRANSLATE_STATUS_CHECK_DELAY);
76   }
79 }());  // anonymous function