|
16 | 16 |
|
17 | 17 | namespace flutter {
|
18 | 18 |
|
19 |
| -PlatformViewIOS::AccessibilityBridgePtr::AccessibilityBridgePtr( |
| 19 | +PlatformViewIOS::AccessibilityBridgeManager::AccessibilityBridgeManager( |
20 | 20 | const std::function<void(bool)>& set_semantics_enabled)
|
21 |
| - : AccessibilityBridgePtr(set_semantics_enabled, nullptr) {} |
| 21 | + : AccessibilityBridgeManager(set_semantics_enabled, nullptr) {} |
22 | 22 |
|
23 |
| -PlatformViewIOS::AccessibilityBridgePtr::AccessibilityBridgePtr( |
| 23 | +PlatformViewIOS::AccessibilityBridgeManager::AccessibilityBridgeManager( |
24 | 24 | const std::function<void(bool)>& set_semantics_enabled,
|
25 | 25 | AccessibilityBridge* bridge)
|
26 | 26 | : accessibility_bridge_(bridge), set_semantics_enabled_(set_semantics_enabled) {
|
|
29 | 29 | }
|
30 | 30 | }
|
31 | 31 |
|
32 |
| -PlatformViewIOS::AccessibilityBridgePtr::~AccessibilityBridgePtr() { |
33 |
| - if (accessibility_bridge_) { |
34 |
| - set_semantics_enabled_(false); |
35 |
| - } |
| 32 | +void PlatformViewIOS::AccessibilityBridgeManager::Set(std::unique_ptr<AccessibilityBridge> bridge) { |
| 33 | + accessibility_bridge_ = std::move(bridge); |
| 34 | + set_semantics_enabled_(true); |
36 | 35 | }
|
37 | 36 |
|
38 |
| -void PlatformViewIOS::AccessibilityBridgePtr::reset(AccessibilityBridge* bridge) { |
39 |
| - if (accessibility_bridge_) { |
40 |
| - set_semantics_enabled_(false); |
41 |
| - } |
42 |
| - accessibility_bridge_.reset(bridge); |
43 |
| - if (accessibility_bridge_) { |
44 |
| - set_semantics_enabled_(true); |
45 |
| - } |
| 37 | +void PlatformViewIOS::AccessibilityBridgeManager::Clear() { |
| 38 | + set_semantics_enabled_(false); |
| 39 | + accessibility_bridge_.reset(); |
46 | 40 | }
|
47 | 41 |
|
48 | 42 | PlatformViewIOS::PlatformViewIOS(
|
|
83 | 77 | if (ios_surface_ || !owner_controller) {
|
84 | 78 | NotifyDestroyed();
|
85 | 79 | ios_surface_.reset();
|
86 |
| - accessibility_bridge_.reset(); |
| 80 | + accessibility_bridge_.Clear(); |
87 | 81 | }
|
88 | 82 | owner_controller_ = owner_controller;
|
89 | 83 |
|
|
95 | 89 | queue:[NSOperationQueue mainQueue]
|
96 | 90 | usingBlock:^(NSNotification* note) {
|
97 | 91 | // Implicit copy of 'this' is fine.
|
98 |
| - accessibility_bridge_.reset(); |
| 92 | + accessibility_bridge_.Clear(); |
99 | 93 | owner_controller_.reset();
|
100 | 94 | }] retain]);
|
101 | 95 |
|
|
119 | 113 | FML_DCHECK(ios_surface_ != nullptr);
|
120 | 114 |
|
121 | 115 | if (accessibility_bridge_) {
|
122 |
| - accessibility_bridge_.reset(new AccessibilityBridge( |
| 116 | + accessibility_bridge_.Set(std::make_unique<AccessibilityBridge>( |
123 | 117 | owner_controller_.get(), this, [owner_controller_.get() platformViewsController]));
|
124 | 118 | }
|
125 | 119 | }
|
|
166 | 160 | return;
|
167 | 161 | }
|
168 | 162 | if (enabled && !accessibility_bridge_) {
|
169 |
| - accessibility_bridge_.reset(new AccessibilityBridge( |
| 163 | + accessibility_bridge_.Set(std::make_unique<AccessibilityBridge>( |
170 | 164 | owner_controller_.get(), this, [owner_controller_.get() platformViewsController]));
|
171 | 165 | } else if (!enabled && accessibility_bridge_) {
|
172 |
| - accessibility_bridge_.reset(); |
| 166 | + accessibility_bridge_.Clear(); |
173 | 167 | } else {
|
174 | 168 | PlatformView::SetSemanticsEnabled(enabled);
|
175 | 169 | }
|
|
185 | 179 | flutter::CustomAccessibilityActionUpdates actions) {
|
186 | 180 | FML_DCHECK(owner_controller_);
|
187 | 181 | if (accessibility_bridge_) {
|
188 |
| - accessibility_bridge_->UpdateSemantics(std::move(update), std::move(actions)); |
| 182 | + accessibility_bridge_.get()->UpdateSemantics(std::move(update), std::move(actions)); |
189 | 183 | [[NSNotificationCenter defaultCenter] postNotificationName:FlutterSemanticsUpdateNotification
|
190 | 184 | object:owner_controller_.get()];
|
191 | 185 | }
|
|
198 | 192 |
|
199 | 193 | void PlatformViewIOS::OnPreEngineRestart() const {
|
200 | 194 | if (accessibility_bridge_) {
|
201 |
| - accessibility_bridge_->clearState(); |
| 195 | + accessibility_bridge_.get()->clearState(); |
202 | 196 | }
|
203 | 197 | if (!owner_controller_) {
|
204 | 198 | return;
|
|
0 commit comments