|
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