Home | History | Annotate | Download | only in win
      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