| // Copyright 2018 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "third_party/blink/renderer/core/accessibility/ax_context.h" |
| #include "third_party/blink/renderer/core/accessibility/ax_object_cache.h" |
| #include "third_party/blink/renderer/core/dom/document.h" |
| |
| namespace blink { |
| |
| class AXObjectCache; |
| |
| AXContext::AXContext(Document& document, const ui::AXMode& ax_mode) |
| : document_(&document), ax_mode_(ax_mode) { |
| DCHECK(document_); |
| document_->AddAXContext(this); |
| } |
| |
| AXContext::~AXContext() { |
| if (document_) |
| document_->RemoveAXContext(this); |
| } |
| |
| AXObjectCache& AXContext::GetAXObjectCache() { |
| DCHECK(document_); |
| DCHECK(document_->IsActive()); |
| |
| DCHECK_EQ( |
| ax_mode_.mode(), |
| document_->ExistingAXObjectCache()->GetAXMode().mode() & ax_mode_.mode()); |
| |
| return *document_->ExistingAXObjectCache(); |
| } |
| |
| bool AXContext::HasActiveDocument() { |
| return document_ && document_->IsActive(); |
| } |
| |
| Document* AXContext::GetDocument() { |
| return document_; |
| } |
| |
| } // namespace blink |