// Copyright 2016 The Chromium Embedded Framework Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be found // in the LICENSE file. #include "libcef/browser/views/textfield_impl.h" #include "libcef/browser/thread_util.h" // static CefRefPtr CefTextfield::CreateTextfield( CefRefPtr delegate) { return CefTextfieldImpl::Create(delegate); } // static CefRefPtr CefTextfieldImpl::Create( CefRefPtr delegate) { CEF_REQUIRE_UIT_RETURN(nullptr); CefRefPtr textfield = new CefTextfieldImpl(delegate); textfield->Initialize(); return textfield; } void CefTextfieldImpl::SetPasswordInput(bool password_input) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetTextInputType(password_input ? ui::TEXT_INPUT_TYPE_PASSWORD : ui::TEXT_INPUT_TYPE_TEXT); } bool CefTextfieldImpl::IsPasswordInput() { CEF_REQUIRE_VALID_RETURN(false); return (root_view()->GetTextInputType() == ui::TEXT_INPUT_TYPE_PASSWORD); } void CefTextfieldImpl::SetReadOnly(bool read_only) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetReadOnly(read_only); } bool CefTextfieldImpl::IsReadOnly() { CEF_REQUIRE_VALID_RETURN(false); return root_view()->GetReadOnly(); } CefString CefTextfieldImpl::GetText() { CEF_REQUIRE_VALID_RETURN(CefString()); return root_view()->GetText(); } void CefTextfieldImpl::SetText(const CefString& text) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetText(text); } void CefTextfieldImpl::AppendText(const CefString& text) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->AppendText(text); } void CefTextfieldImpl::InsertOrReplaceText(const CefString& text) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->InsertOrReplaceText(text); } bool CefTextfieldImpl::HasSelection() { CEF_REQUIRE_VALID_RETURN(false); return root_view()->HasSelection(); } CefString CefTextfieldImpl::GetSelectedText() { CEF_REQUIRE_VALID_RETURN(CefString()); return root_view()->GetSelectedText(); } void CefTextfieldImpl::SelectAll(bool reversed) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SelectAll(reversed); } void CefTextfieldImpl::ClearSelection() { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->ClearSelection(); } CefRange CefTextfieldImpl::GetSelectedRange() { CEF_REQUIRE_VALID_RETURN(CefRange()); const gfx::Range& range = root_view()->GetSelectedRange(); return CefRange(range.start(), range.end()); } void CefTextfieldImpl::SelectRange(const CefRange& range) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetSelectedRange(gfx::Range(range.from, range.to)); } size_t CefTextfieldImpl::GetCursorPosition() { CEF_REQUIRE_VALID_RETURN(0U); return root_view()->GetCursorPosition(); } void CefTextfieldImpl::SetTextColor(cef_color_t color) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetTextColor(color); } cef_color_t CefTextfieldImpl::GetTextColor() { CEF_REQUIRE_VALID_RETURN(0U); return root_view()->GetTextColor(); } void CefTextfieldImpl::SetSelectionTextColor(cef_color_t color) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetSelectionTextColor(color); } cef_color_t CefTextfieldImpl::GetSelectionTextColor() { CEF_REQUIRE_VALID_RETURN(0U); return root_view()->GetSelectionTextColor(); } void CefTextfieldImpl::SetSelectionBackgroundColor(cef_color_t color) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetSelectionBackgroundColor(color); } cef_color_t CefTextfieldImpl::GetSelectionBackgroundColor() { CEF_REQUIRE_VALID_RETURN(0U); return root_view()->GetSelectionBackgroundColor(); } void CefTextfieldImpl::SetFontList(const CefString& font_list) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetFontList(gfx::FontList(font_list)); } void CefTextfieldImpl::ApplyTextColor(cef_color_t color, const CefRange& range) { CEF_REQUIRE_VALID_RETURN_VOID(); if (range.from == range.to) root_view()->SetColor(color); else root_view()->ApplyColor(color, gfx::Range(range.from, range.to)); } void CefTextfieldImpl::ApplyTextStyle(cef_text_style_t style, bool add, const CefRange& range) { CEF_REQUIRE_VALID_RETURN_VOID(); if (range.from == range.to) { root_view()->SetStyle(static_cast(style), add); } else { root_view()->ApplyStyle(static_cast(style), add, gfx::Range(range.from, range.to)); } } bool CefTextfieldImpl::IsCommandEnabled(int command_id) { CEF_REQUIRE_VALID_RETURN(false); return root_view()->IsCommandIdEnabled(command_id); } void CefTextfieldImpl::ExecuteCommand(int command_id) { CEF_REQUIRE_VALID_RETURN_VOID(); if (root_view()->IsCommandIdEnabled(command_id)) root_view()->ExecuteCommand(command_id, ui::EF_NONE); } void CefTextfieldImpl::ClearEditHistory() { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->ClearEditHistory(); } void CefTextfieldImpl::SetPlaceholderText(const CefString& text) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetPlaceholderText(text); } CefString CefTextfieldImpl::GetPlaceholderText() { CEF_REQUIRE_VALID_RETURN(CefString()); return root_view()->GetPlaceholderText(); } void CefTextfieldImpl::SetPlaceholderTextColor(cef_color_t color) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->set_placeholder_text_color(color); } void CefTextfieldImpl::SetBackgroundColor(cef_color_t color) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetBackgroundColor(color); } cef_color_t CefTextfieldImpl::GetBackgroundColor() { CEF_REQUIRE_VALID_RETURN(0U); return root_view()->GetBackgroundColor(); } void CefTextfieldImpl::SetAccessibleName(const CefString& name) { CEF_REQUIRE_VALID_RETURN_VOID(); root_view()->SetAccessibleName(name); } CefTextfieldImpl::CefTextfieldImpl(CefRefPtr delegate) : ParentClass(delegate) {} CefTextfieldView* CefTextfieldImpl::CreateRootView() { return new CefTextfieldView(delegate()); } void CefTextfieldImpl::InitializeRootView() { static_cast(root_view())->Initialize(); }