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