1// Copyright (c) 2012 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#include "ui/base/win/accessibility_misc_utils.h" 5 6#include "base/logging.h" 7#include "ui/base/win/atl_module.h" 8 9namespace base { 10namespace win { 11 12// UIA TextProvider implementation. 13UIATextProvider::UIATextProvider() 14 : editable_(false) {} 15 16// static 17bool UIATextProvider::CreateTextProvider(bool editable, IUnknown** provider) { 18 // Make sure ATL is initialized in this module. 19 ui::win::CreateATLModuleIfNeeded(); 20 21 CComObject<UIATextProvider>* text_provider = NULL; 22 HRESULT hr = CComObject<UIATextProvider>::CreateInstance(&text_provider); 23 if (SUCCEEDED(hr)) { 24 DCHECK(text_provider); 25 text_provider->set_editable(editable); 26 text_provider->AddRef(); 27 *provider = static_cast<ITextProvider*>(text_provider); 28 return true; 29 } 30 return false; 31} 32 33STDMETHODIMP UIATextProvider::get_IsReadOnly(BOOL* read_only) { 34 *read_only = !editable_; 35 return S_OK; 36} 37 38} // namespace win 39} // namespace base 40