Commit 8f7d7a50 authored by John Z Wu's avatar John Z Wu Committed by Commit Bot

Refresh supportedLanguages if they have been updated underneath

This fixes an issue where supportedLanguages becomes stale, which causes
translate to be offered with a nil CWVTranslationLanguage.

Bug: 1012518
Change-Id: Iaed82b4c539443e38ba5198b0c87ae6bab28c7c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1848652
Commit-Queue: John Wu <jzw@chromium.org>
Reviewed-by: default avatarHiroshi Ichikawa <ichikawa@chromium.org>
Cr-Commit-Position: refs/heads/master@{#704216}
parent fa53f4f6
......@@ -10,6 +10,7 @@
#include "base/memory/ptr_util.h"
#include "base/strings/string16.h"
#include "base/strings/sys_string_conversions.h"
#include "base/time/time.h"
#include "components/translate/core/browser/translate_download_manager.h"
#import "ios/web_view/internal/cwv_web_view_configuration_internal.h"
#import "ios/web_view/internal/translate/cwv_translation_language_internal.h"
......@@ -74,6 +75,7 @@ CWVTranslationError CWVConvertTranslateError(
@implementation CWVTranslationController {
ios_web_view::WebViewTranslateClient* _translateClient;
std::unique_ptr<translate::TranslatePrefs> _translatePrefs;
base::Time _languagesLastUpdatedTime;
}
@synthesize delegate = _delegate;
......@@ -245,7 +247,10 @@ CWVTranslationError CWVConvertTranslateError(
#pragma mark - Private Methods
- (NSDictionary<NSString*, CWVTranslationLanguage*>*)supportedLanguagesByCode {
if (!_supportedLanguagesByCode) {
base::Time languagesLastUpdatedTime =
translate::TranslateDownloadManager::GetSupportedLanguagesLastUpdated();
if (!_supportedLanguagesByCode ||
_languagesLastUpdatedTime < languagesLastUpdatedTime) {
NSMutableDictionary<NSString*, CWVTranslationLanguage*>*
supportedLanguagesByCode = [NSMutableDictionary dictionary];
std::vector<std::string> languageCodes;
......@@ -265,7 +270,7 @@ CWVTranslationError CWVConvertTranslateError(
supportedLanguagesByCode[language.languageCode] = language;
}
_languagesLastUpdatedTime = languagesLastUpdatedTime;
_supportedLanguagesByCode = [supportedLanguagesByCode copy];
}
return _supportedLanguagesByCode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment