|  | // Copyright 2019 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "chrome/browser/ui/translate/source_language_combobox_model.h" | 
|  |  | 
|  | #include "base/strings/utf_string_conversions.h" | 
|  | #include "chrome/browser/ui/translate/translate_language_list_model.h" | 
|  |  | 
|  | SourceLanguageComboboxModel::SourceLanguageComboboxModel( | 
|  | int default_index, | 
|  | TranslateLanguageListModel* model) | 
|  | : default_index_(default_index < 0 ? 0 : default_index), model_(model) { | 
|  | // view::Combobox can't treate an negative index, but |default_index| can be | 
|  | // negative when, for example, the page's language can't be detected. | 
|  | } | 
|  |  | 
|  | SourceLanguageComboboxModel::~SourceLanguageComboboxModel() = default; | 
|  |  | 
|  | size_t SourceLanguageComboboxModel::GetItemCount() const { | 
|  | return model_->GetNumberOfSourceLanguages(); | 
|  | } | 
|  |  | 
|  | std::u16string SourceLanguageComboboxModel::GetItemAt(size_t index) const { | 
|  | return model_->GetSourceLanguageNameAt(index); | 
|  | } | 
|  |  | 
|  | std::optional<size_t> SourceLanguageComboboxModel::GetDefaultIndex() const { | 
|  | return default_index_; | 
|  | } |