1// Copyright 2019 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. 4 5#import "ios/chrome/browser/ui/webui/translate_internals/translate_internals_ui.h" 6 7#include <string> 8 9#import "components/translate/translate_internals/translate_internals_handler.h" 10#include "ios/chrome/browser/browser_state/chrome_browser_state.h" 11#include "ios/chrome/browser/chrome_url_constants.h" 12#import "ios/chrome/browser/ui/webui/translate_internals/ios_translate_internals_handler.h" 13#include "ios/chrome/grit/ios_resources.h" 14#include "ios/web/public/webui/web_ui_ios.h" 15#include "ios/web/public/webui/web_ui_ios_data_source.h" 16 17#if !defined(__has_feature) || !__has_feature(objc_arc) 18#error "This file requires ARC support." 19#endif 20 21namespace { 22 23// Creates a WebUI data source for chrome://translate-internals page. 24// Changes to this should be in sync with its non-iOS equivalent 25// chrome/browser/ui/webui/translate_internals/translate_internals_ui.cc 26web::WebUIIOSDataSource* CreateTranslateInternalsHTMLSource() { 27 web::WebUIIOSDataSource* source = 28 web::WebUIIOSDataSource::Create(kChromeUITranslateInternalsHost); 29 30 source->SetDefaultResource(IDR_IOS_TRANSLATE_INTERNALS_HTML); 31 source->UseStringsJs(); 32 source->AddResourcePath("translate_internals.js", 33 IDR_IOS_TRANSLATE_INTERNALS_JS); 34 35 base::DictionaryValue langs; 36 translate::TranslateInternalsHandler::GetLanguages(&langs); 37 for (base::DictionaryValue::Iterator it(langs); !it.IsAtEnd(); it.Advance()) { 38 std::string key = "language-" + it.key(); 39 std::string value; 40 it.value().GetAsString(&value); 41 source->AddString(key, value); 42 } 43 44 source->AddString("cld-version", "3"); 45 46 return source; 47} 48 49} // namespace 50 51TranslateInternalsUI::TranslateInternalsUI(web::WebUIIOS* web_ui, 52 const std::string& host) 53 : web::WebUIIOSController(web_ui, host) { 54 web_ui->AddMessageHandler(std::make_unique<IOSTranslateInternalsHandler>()); 55 web::WebUIIOSDataSource::Add(ChromeBrowserState::FromWebUIIOS(web_ui), 56 CreateTranslateInternalsHTMLSource()); 57} 58 59TranslateInternalsUI::~TranslateInternalsUI() {} 60