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 9 namespace base { 10 namespace win { 11 12 // UIA TextProvider implementation. 13 UIATextProvider::UIATextProvider() 14 : editable_(false) {} 15 16 // static 17 bool 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 33 STDMETHODIMP UIATextProvider::get_IsReadOnly(BOOL* read_only) { 34 *read_only = !editable_; 35 return S_OK; 36 } 37 38 } // namespace win 39 } // namespace base 40