accessible/qplatformaccessibility.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtGui module of the Qt Toolkit. -
7** -
8** $QT_BEGIN_LICENSE:LGPL$ -
9** Commercial License Usage -
10** Licensees holding valid commercial Qt licenses may use this file in -
11** accordance with the commercial license agreement provided with the -
12** Software or, alternatively, in accordance with the terms contained in -
13** a written agreement between you and Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/contact-us. -
16** -
17** GNU Lesser General Public License Usage -
18** Alternatively, this file may be used under the terms of the GNU Lesser -
19** General Public License version 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41#include "qplatformaccessibility.h" -
42#include <private/qfactoryloader_p.h> -
43#include "qaccessibleplugin.h" -
44#include "qaccessibleobject.h" -
45#include "qaccessiblebridge.h" -
46#include <QtGui/QGuiApplication> -
47 -
48#include <QDebug> -
49 -
50QT_BEGIN_NAMESPACE -
51 -
52#ifndef QT_NO_ACCESSIBILITY -
53 -
54/* accessiblebridge plugin discovery stuff */ -
55#ifndef QT_NO_LIBRARY -
56Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, bridgeloader,
never executed: delete x;
executed: return thisGlobalStatic.pointer.load();
Execution Count:5
partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
partially evaluated: !thisGlobalStatic.pointer.load()
TRUEFALSE
yes
Evaluation Count:5
no
Evaluation Count:0
partially evaluated: !thisGlobalStatic.destroyed
TRUEFALSE
yes
Evaluation Count:5
no
Evaluation Count:0
0-5
57 (QAccessibleBridgeFactoryInterface_iid, QLatin1String("/accessiblebridge"))) -
58#endif -
59 -
60Q_GLOBAL_STATIC(QVector<QAccessibleBridge *>, bridges)
never executed: delete x;
executed: return thisGlobalStatic.pointer.load();
Execution Count:43
partially evaluated: !thisGlobalStatic.pointer.testAndSetOrdered(0, x)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
evaluated: !thisGlobalStatic.pointer.load()
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:38
partially evaluated: !thisGlobalStatic.destroyed
TRUEFALSE
yes
Evaluation Count:5
no
Evaluation Count:0
0-43
61 -
62/*! -
63 \class QPlatformAccessibility -
64 \since 5.0 -
65 \internal -
66 \preliminary -
67 \ingroup qpa -
68 \ingroup accessibility -
69 -
70 \brief The QPlatformAccessibility class is the base class for -
71 integrating accessibility backends -
72 -
73 \sa QAccessible -
74*/ -
75QPlatformAccessibility::QPlatformAccessibility() -
76{ -
77} -
78 -
79QPlatformAccessibility::~QPlatformAccessibility() -
80{ -
81} -
82 -
83void QPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event) -
84{ -
85 initialize();
never executed (the execution status of this line is deduced): initialize();
-
86 -
87 if (!bridges() || bridges()->isEmpty())
never evaluated: !bridges()
never evaluated: bridges()->isEmpty()
0
88 return;
never executed: return;
0
89 -
90 for (int i = 0; i < bridges()->count(); ++i)
never evaluated: i < bridges()->count()
0
91 bridges()->at(i)->notifyAccessibilityUpdate(event);
never executed: bridges()->at(i)->notifyAccessibilityUpdate(event);
0
92}
never executed: }
0
93 -
94void QPlatformAccessibility::setRootObject(QObject *o) -
95{ -
96 initialize();
executed (the execution status of this line is deduced): initialize();
-
97 if (bridges()->isEmpty())
partially evaluated: bridges()->isEmpty()
TRUEFALSE
yes
Evaluation Count:43
no
Evaluation Count:0
0-43
98 return;
executed: return;
Execution Count:43
43
99 -
100 if (!o)
never evaluated: !o
0
101 return;
never executed: return;
0
102 -
103 for (int i = 0; i < bridges()->count(); ++i) {
never evaluated: i < bridges()->count()
0
104 QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(o);
never executed (the execution status of this line is deduced): QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(o);
-
105 bridges()->at(i)->setRootObject(iface);
never executed (the execution status of this line is deduced): bridges()->at(i)->setRootObject(iface);
-
106 }
never executed: }
0
107}
never executed: }
0
108 -
109void QPlatformAccessibility::initialize() -
110{ -
111 static bool isInit = false; -
112 if (isInit)
evaluated: isInit
TRUEFALSE
yes
Evaluation Count:38
yes
Evaluation Count:5
5-38
113 return;
executed: return;
Execution Count:38
38
114 isInit = true; // ### not atomic
executed (the execution status of this line is deduced): isInit = true;
-
115 -
116#ifndef QT_NO_LIBRARY -
117 typedef QMultiMap<int, QString> PluginKeyMap;
executed (the execution status of this line is deduced): typedef QMultiMap<int, QString> PluginKeyMap;
-
118 typedef PluginKeyMap::const_iterator PluginKeyMapConstIterator;
executed (the execution status of this line is deduced): typedef PluginKeyMap::const_iterator PluginKeyMapConstIterator;
-
119 -
120 const PluginKeyMap keyMap = bridgeloader()->keyMap();
executed (the execution status of this line is deduced): const PluginKeyMap keyMap = bridgeloader()->keyMap();
-
121 QAccessibleBridgePlugin *factory = 0;
executed (the execution status of this line is deduced): QAccessibleBridgePlugin *factory = 0;
-
122 int i = -1;
executed (the execution status of this line is deduced): int i = -1;
-
123 const PluginKeyMapConstIterator cend = keyMap.constEnd();
executed (the execution status of this line is deduced): const PluginKeyMapConstIterator cend = keyMap.constEnd();
-
124 for (PluginKeyMapConstIterator it = keyMap.constBegin(); it != cend; ++it) {
partially evaluated: it != cend
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
0-5
125 if (it.key() != i) {
never evaluated: it.key() != i
0
126 i = it.key();
never executed (the execution status of this line is deduced): i = it.key();
-
127 factory = qobject_cast<QAccessibleBridgePlugin*>(bridgeloader()->instance(i));
never executed (the execution status of this line is deduced): factory = qobject_cast<QAccessibleBridgePlugin*>(bridgeloader()->instance(i));
-
128 }
never executed: }
0
129 if (factory)
never evaluated: factory
0
130 if (QAccessibleBridge *bridge = factory->create(it.value()))
never evaluated: QAccessibleBridge *bridge = factory->create(it.value())
0
131 bridges()->append(bridge);
never executed: bridges()->append(bridge);
0
132 }
never executed: }
0
133#endif -
134}
executed: }
Execution Count:5
5
135 -
136void QPlatformAccessibility::cleanup() -
137{ -
138 qDeleteAll(*bridges());
never executed (the execution status of this line is deduced): qDeleteAll(*bridges());
-
139}
never executed: }
0
140 -
141#endif // QT_NO_ACCESSIBILITY -
142 -
143QT_END_NAMESPACE -
144 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial