forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interaction_sequence_views.cc
59 lines (51 loc) · 2.12 KB
/
interaction_sequence_views.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// Copyright 2021 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 "ui/views/interaction/interaction_sequence_views.h"
#include <utility>
#include "ui/base/interaction/element_identifier.h"
#include "ui/base/interaction/element_tracker.h"
#include "ui/base/interaction/interaction_sequence.h"
#include "ui/views/interaction/element_tracker_views.h"
#include "ui/views/view.h"
#include "ui/views/view_class_properties.h"
namespace views {
// static
std::unique_ptr<ui::InteractionSequence::Step>
InteractionSequenceViews::WithInitialView(
View* view,
ui::InteractionSequence::StepStartCallback start_callback,
ui::InteractionSequence::StepEndCallback end_callback) {
// If there's already an element associated with this view, then explicitly
// key off of that element.
auto* const element =
ElementTrackerViews::GetInstance()->GetElementForView(view);
if (element)
return ui::InteractionSequence::WithInitialElement(
element, std::move(start_callback), std::move(end_callback));
// Otherwise, use the element's identifier and context.
ui::ElementContext context = ElementTrackerViews::GetContextForView(view);
ui::ElementIdentifier identifier = view->GetProperty(kElementIdentifierKey);
return ui::InteractionSequence::StepBuilder()
.SetContext(context)
.SetElementID(identifier)
.SetType(ui::InteractionSequence::StepType::kShown)
.SetMustBeVisibleAtStart(true)
.SetMustRemainVisible(true)
.SetStartCallback(std::move(start_callback))
.SetEndCallback(std::move(end_callback))
.Build();
}
// static
void InteractionSequenceViews::NameView(ui::InteractionSequence* sequence,
View* view,
const base::StringPiece& name) {
ui::TrackedElement* element = nullptr;
if (view) {
element = ElementTrackerViews::GetInstance()->GetElementForView(
view, /* assign_temporary_id =*/true);
DCHECK(element);
}
sequence->NameElement(element, name);
}
} // namespace views