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 @@ ...@@ -10,6 +10,7 @@
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "base/time/time.h"
#include "components/translate/core/browser/translate_download_manager.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/cwv_web_view_configuration_internal.h"
#import "ios/web_view/internal/translate/cwv_translation_language_internal.h" #import "ios/web_view/internal/translate/cwv_translation_language_internal.h"
...@@ -74,6 +75,7 @@ CWVTranslationError CWVConvertTranslateError( ...@@ -74,6 +75,7 @@ CWVTranslationError CWVConvertTranslateError(
@implementation CWVTranslationController { @implementation CWVTranslationController {
ios_web_view::WebViewTranslateClient* _translateClient; ios_web_view::WebViewTranslateClient* _translateClient;
std::unique_ptr<translate::TranslatePrefs> _translatePrefs; std::unique_ptr<translate::TranslatePrefs> _translatePrefs;
base::Time _languagesLastUpdatedTime;
} }
@synthesize delegate = _delegate; @synthesize delegate = _delegate;
...@@ -245,7 +247,10 @@ CWVTranslationError CWVConvertTranslateError( ...@@ -245,7 +247,10 @@ CWVTranslationError CWVConvertTranslateError(
#pragma mark - Private Methods #pragma mark - Private Methods
- (NSDictionary<NSString*, CWVTranslationLanguage*>*)supportedLanguagesByCode { - (NSDictionary<NSString*, CWVTranslationLanguage*>*)supportedLanguagesByCode {
if (!_supportedLanguagesByCode) { base::Time languagesLastUpdatedTime =
translate::TranslateDownloadManager::GetSupportedLanguagesLastUpdated();
if (!_supportedLanguagesByCode ||
_languagesLastUpdatedTime < languagesLastUpdatedTime) {
NSMutableDictionary<NSString*, CWVTranslationLanguage*>* NSMutableDictionary<NSString*, CWVTranslationLanguage*>*
supportedLanguagesByCode = [NSMutableDictionary dictionary]; supportedLanguagesByCode = [NSMutableDictionary dictionary];
std::vector<std::string> languageCodes; std::vector<std::string> languageCodes;
...@@ -265,7 +270,7 @@ CWVTranslationError CWVConvertTranslateError( ...@@ -265,7 +270,7 @@ CWVTranslationError CWVConvertTranslateError(
supportedLanguagesByCode[language.languageCode] = language; supportedLanguagesByCode[language.languageCode] = language;
} }
_languagesLastUpdatedTime = languagesLastUpdatedTime;
_supportedLanguagesByCode = [supportedLanguagesByCode copy]; _supportedLanguagesByCode = [supportedLanguagesByCode copy];
} }
return _supportedLanguagesByCode; 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