string16 NativeTextfieldWin::GetSelectedText() const { // Figure out the length of the selection. long start; long end; GetSel(start, end); // Grab the selected text. std::wstring str; GetSelText(WriteInto(&str, end-start+1)); return str; }
string16 NativeTextfieldWin::GetText() const { int len = GetTextLength() + 1; std::wstring str; GetWindowText(WriteInto(&str, len), len); // The text get from GetWindowText() might be wrapped with explicit bidi // control characters. Refer to UpdateText() for detail. Without such // wrapping, in RTL chrome, a pure LTR string ending with parenthesis will // not be displayed correctly in a textfield. For example, "Yahoo!" will be // displayed as "!Yahoo", and "Google (by default)" will be displayed as // "(Google (by default". return base::i18n::StripWrappingBidiControlCharacters(WideToUTF16(str)); }
std::wstring SysMultiByteToWide(const std::string& mb_str, CodePage code_page) { if (mb_str.empty()) return std::wstring(); // |char_count| does not include null-terminate. int mb_str_length = static_cast<int>(mb_str.length()); int char_count = MultiByteToWideChar(static_cast<unsigned>(code_page), 0, mb_str.data(), mb_str_length, nullptr, 0); if (char_count == 0) return std::wstring(); std::wstring wide_str; wchar_t* ptr = WriteInto(&wide_str, char_count + 1); MultiByteToWideChar(static_cast<unsigned>(code_page), 0, mb_str.data(), mb_str_length, ptr, char_count); return wide_str; }
std::string SysWideToMultiByte(const std::wstring& wide_str, CodePage code_page) { if (wide_str.empty()) return std::string(); int wide_str_length = static_cast<int>(wide_str.length()); int char_count = WideCharToMultiByte(static_cast<int>(code_page), 0, wide_str.data(), wide_str_length, nullptr, 0, nullptr, nullptr); if (char_count == 0) return std::string(); std::string mb_str; char* ptr = WriteInto(&mb_str, char_count + 1); WideCharToMultiByte(static_cast<int>(code_page), 0, wide_str.data(), wide_str_length, ptr, char_count, nullptr, nullptr); return mb_str; }
std::string RandBytesAsString(size_t length) { std::string result; RandBytes(WriteInto(&result, length + 1), length); return result; }