1// Copyright (c) 2011 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#include "chrome/browser/ui/omnibox/location_bar_util.h" 6 7#include "base/i18n/rtl.h" 8#include "base/utf_string_conversions.h" 9#include "chrome/browser/profiles/profile.h" 10#include "chrome/browser/search_engines/template_url.h" 11#include "chrome/browser/search_engines/template_url_model.h" 12#include "ui/base/l10n/l10n_util.h" 13 14namespace location_bar_util { 15 16std::wstring GetKeywordName(Profile* profile, const std::wstring& keyword) { 17// Make sure the TemplateURL still exists. 18// TODO(sky): Once LocationBarView adds a listener to the TemplateURLModel 19// to track changes to the model, this should become a DCHECK. 20 const TemplateURL* template_url = 21 profile->GetTemplateURLModel()->GetTemplateURLForKeyword( 22 WideToUTF16Hack(keyword)); 23 if (template_url) 24 return UTF16ToWideHack(template_url->AdjustedShortNameForLocaleDirection()); 25 return std::wstring(); 26} 27 28std::wstring CalculateMinString(const std::wstring& description) { 29 // Chop at the first '.' or whitespace. 30 const size_t dot_index = description.find(L'.'); 31 const size_t ws_index = description.find_first_of(kWhitespaceWide); 32 size_t chop_index = std::min(dot_index, ws_index); 33 std::wstring min_string; 34 if (chop_index == std::wstring::npos) { 35 // No dot or whitespace, truncate to at most 3 chars. 36 min_string = UTF16ToWideHack( 37 l10n_util::TruncateString(WideToUTF16Hack(description), 3)); 38 } else { 39 min_string = description.substr(0, chop_index); 40 } 41 base::i18n::AdjustStringForLocaleDirection(&min_string); 42 return min_string; 43} 44 45} // namespace location_bar_util 46