Commit a6e0770d authored by Mustaq Ahmed's avatar Mustaq Ahmed Committed by Commit Bot

Remove timeout policy from UserGestureIndicator.

With UAv2 shipped, UGIs are redundant except for a dependency from
extension messaging.  Since that dependency can't be removed right away,
we will trim down UGI to a minimal class now to prevent new usage as
much as possible.  This CL takes care of the timeout policy plus all
orphan entries in UGI.

Change-Id: Ia1d44ae7457be22adaaab5aa569901560b0bd2e5
Bug: 959850
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1869391Reviewed-by: default avatarNavid Zolghadr <nzolghadr@chromium.org>
Reviewed-by: default avatarDave Tapuska <dtapuska@chromium.org>
Commit-Queue: Mustaq Ahmed <mustaq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708719}
parent 4908adb5
...@@ -19,8 +19,7 @@ const double kUserGestureTimeout = 1.0; ...@@ -19,8 +19,7 @@ const double kUserGestureTimeout = 1.0;
UserGestureToken::UserGestureToken(Status status) UserGestureToken::UserGestureToken(Status status)
: consumable_gestures_(0), : consumable_gestures_(0),
clock_(base::DefaultClock::GetInstance()), clock_(base::DefaultClock::GetInstance()),
timestamp_(clock_->Now().ToDoubleT()), timestamp_(clock_->Now().ToDoubleT()) {
timeout_policy_(kDefault) {
if (status == kNewGesture || !UserGestureIndicator::CurrentTokenThreadSafe()) if (status == kNewGesture || !UserGestureIndicator::CurrentTokenThreadSafe())
consumable_gestures_++; consumable_gestures_++;
} }
...@@ -43,28 +42,14 @@ bool UserGestureToken::ConsumeGesture() { ...@@ -43,28 +42,14 @@ bool UserGestureToken::ConsumeGesture() {
return true; return true;
} }
void UserGestureToken::SetTimeoutPolicy(TimeoutPolicy policy) {
if (HasGestures() && policy > timeout_policy_)
timeout_policy_ = policy;
}
void UserGestureToken::ResetTimestamp() { void UserGestureToken::ResetTimestamp() {
timestamp_ = clock_->Now().ToDoubleT(); timestamp_ = clock_->Now().ToDoubleT();
} }
bool UserGestureToken::HasTimedOut() const { bool UserGestureToken::HasTimedOut() const {
if (timeout_policy_ == kHasPaused)
return false;
return clock_->Now().ToDoubleT() - timestamp_ > kUserGestureTimeout; return clock_->Now().ToDoubleT() - timestamp_ > kUserGestureTimeout;
} }
// This enum is used in a histogram, so its values shouldn't change.
enum GestureMergeState {
kOldTokenHasGesture = 1 << 0,
kNewTokenHasGesture = 1 << 1,
kGestureMergeStateEnd = 1 << 2,
};
UserGestureToken* UserGestureIndicator::root_token_ = nullptr; UserGestureToken* UserGestureIndicator::root_token_ = nullptr;
void UserGestureIndicator::UpdateRootToken() { void UserGestureIndicator::UpdateRootToken() {
...@@ -132,11 +117,4 @@ UserGestureToken* UserGestureIndicator::CurrentTokenThreadSafe() { ...@@ -132,11 +117,4 @@ UserGestureToken* UserGestureIndicator::CurrentTokenThreadSafe() {
return IsMainThread() ? CurrentToken() : nullptr; return IsMainThread() ? CurrentToken() : nullptr;
} }
// static
void UserGestureIndicator::SetTimeoutPolicy(
UserGestureToken::TimeoutPolicy policy) {
if (auto* token = CurrentTokenThreadSafe())
token->SetTimeoutPolicy(policy);
}
} // namespace blink } // namespace blink
...@@ -28,7 +28,6 @@ class CORE_EXPORT UserGestureToken : public RefCounted<UserGestureToken> { ...@@ -28,7 +28,6 @@ class CORE_EXPORT UserGestureToken : public RefCounted<UserGestureToken> {
public: public:
enum Status { kNewGesture, kPossiblyExistingGesture }; enum Status { kNewGesture, kPossiblyExistingGesture };
enum TimeoutPolicy { kDefault, kHasPaused };
~UserGestureToken() = default; ~UserGestureToken() = default;
...@@ -41,7 +40,6 @@ class CORE_EXPORT UserGestureToken : public RefCounted<UserGestureToken> { ...@@ -41,7 +40,6 @@ class CORE_EXPORT UserGestureToken : public RefCounted<UserGestureToken> {
void TransferGestureTo(UserGestureToken*); void TransferGestureTo(UserGestureToken*);
bool ConsumeGesture(); bool ConsumeGesture();
void SetTimeoutPolicy(TimeoutPolicy);
void ResetTimestamp(); void ResetTimestamp();
bool HasGestures() const; bool HasGestures() const;
bool HasTimedOut() const; bool HasTimedOut() const;
...@@ -49,7 +47,6 @@ class CORE_EXPORT UserGestureToken : public RefCounted<UserGestureToken> { ...@@ -49,7 +47,6 @@ class CORE_EXPORT UserGestureToken : public RefCounted<UserGestureToken> {
size_t consumable_gestures_; size_t consumable_gestures_;
const base::Clock* clock_; const base::Clock* clock_;
double timestamp_; double timestamp_;
TimeoutPolicy timeout_policy_;
DISALLOW_COPY_AND_ASSIGN(UserGestureToken); DISALLOW_COPY_AND_ASSIGN(UserGestureToken);
}; };
...@@ -76,8 +73,6 @@ class CORE_EXPORT UserGestureIndicator final { ...@@ -76,8 +73,6 @@ class CORE_EXPORT UserGestureIndicator final {
static UserGestureToken* CurrentToken(); static UserGestureToken* CurrentToken();
static UserGestureToken* CurrentTokenThreadSafe(); static UserGestureToken* CurrentTokenThreadSafe();
static void SetTimeoutPolicy(UserGestureToken::TimeoutPolicy);
explicit UserGestureIndicator(scoped_refptr<UserGestureToken>); explicit UserGestureIndicator(scoped_refptr<UserGestureToken>);
// Constructs a UserGestureIndicator with a new UserGestureToken of the given // Constructs a UserGestureIndicator with a new UserGestureToken of the given
......
...@@ -1491,16 +1491,6 @@ std::unique_ptr<UserGestureIndicator> LocalFrame::NotifyUserActivation( ...@@ -1491,16 +1491,6 @@ std::unique_ptr<UserGestureIndicator> LocalFrame::NotifyUserActivation(
return std::make_unique<UserGestureIndicator>(status); return std::make_unique<UserGestureIndicator>(status);
} }
// static
std::unique_ptr<UserGestureIndicator> LocalFrame::NotifyUserActivation(
LocalFrame* frame,
UserGestureToken* token) {
DCHECK(!RuntimeEnabledFeatures::UserActivationV2Enabled());
if (frame)
frame->NotifyUserActivation(false);
return std::make_unique<UserGestureIndicator>(token);
}
// static // static
bool LocalFrame::HasTransientUserActivation(LocalFrame* frame, bool LocalFrame::HasTransientUserActivation(LocalFrame* frame,
bool check_if_main_thread) { bool check_if_main_thread) {
......
...@@ -206,11 +206,6 @@ class CORE_EXPORT LocalFrame final : public Frame, ...@@ -206,11 +206,6 @@ class CORE_EXPORT LocalFrame final : public Frame,
UserGestureToken::Status = UserGestureToken::kPossiblyExistingGesture, UserGestureToken::Status = UserGestureToken::kPossiblyExistingGesture,
bool need_browser_verification = false); bool need_browser_verification = false);
// Similar to above, but used only in old UAv1-specific code.
static std::unique_ptr<UserGestureIndicator> NotifyUserActivation(
LocalFrame*,
UserGestureToken*);
// Returns the transient user activation state of the |LocalFrame|, provided // Returns the transient user activation state of the |LocalFrame|, provided
// it is non-null. Otherwise returns |false|. // it is non-null. Otherwise returns |false|.
// //
......
...@@ -247,8 +247,6 @@ void MainThreadDebugger::runMessageLoopOnPause(int context_group_id) { ...@@ -247,8 +247,6 @@ void MainThreadDebugger::runMessageLoopOnPause(int context_group_id) {
DCHECK(paused_frame == paused_frame->LocalFrameRoot()); DCHECK(paused_frame == paused_frame->LocalFrameRoot());
paused_ = true; paused_ = true;
UserGestureIndicator::SetTimeoutPolicy(UserGestureToken::kHasPaused);
// Wait for continue or step command. // Wait for continue or step command.
if (client_message_loop_) if (client_message_loop_)
client_message_loop_->Run(paused_frame); client_message_loop_->Run(paused_frame);
......
...@@ -373,35 +373,27 @@ void ChromeClientImpl::CloseWindowSoon() { ...@@ -373,35 +373,27 @@ void ChromeClientImpl::CloseWindowSoon() {
web_view_->Client()->CloseWindowSoon(); web_view_->Client()->CloseWindowSoon();
} }
// Although a LocalFrame is passed in, we don't actually use it, since we
// already know our own m_webView.
bool ChromeClientImpl::OpenJavaScriptAlertDelegate(LocalFrame* frame, bool ChromeClientImpl::OpenJavaScriptAlertDelegate(LocalFrame* frame,
const String& message) { const String& message) {
NotifyPopupOpeningObservers(); NotifyPopupOpeningObservers();
WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame); WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame);
if (webframe->Client()) { if (webframe->Client()) {
if (UserGestureIndicator::ProcessingUserGesture())
UserGestureIndicator::SetTimeoutPolicy(UserGestureToken::kHasPaused);
webframe->Client()->RunModalAlertDialog(message); webframe->Client()->RunModalAlertDialog(message);
return true; return true;
} }
return false; return false;
} }
// See comments for openJavaScriptAlertDelegate().
bool ChromeClientImpl::OpenJavaScriptConfirmDelegate(LocalFrame* frame, bool ChromeClientImpl::OpenJavaScriptConfirmDelegate(LocalFrame* frame,
const String& message) { const String& message) {
NotifyPopupOpeningObservers(); NotifyPopupOpeningObservers();
WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame); WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame);
if (webframe->Client()) { if (webframe->Client()) {
if (UserGestureIndicator::ProcessingUserGesture())
UserGestureIndicator::SetTimeoutPolicy(UserGestureToken::kHasPaused);
return webframe->Client()->RunModalConfirmDialog(message); return webframe->Client()->RunModalConfirmDialog(message);
} }
return false; return false;
} }
// See comments for openJavaScriptAlertDelegate().
bool ChromeClientImpl::OpenJavaScriptPromptDelegate(LocalFrame* frame, bool ChromeClientImpl::OpenJavaScriptPromptDelegate(LocalFrame* frame,
const String& message, const String& message,
const String& default_value, const String& default_value,
...@@ -409,8 +401,6 @@ bool ChromeClientImpl::OpenJavaScriptPromptDelegate(LocalFrame* frame, ...@@ -409,8 +401,6 @@ bool ChromeClientImpl::OpenJavaScriptPromptDelegate(LocalFrame* frame,
NotifyPopupOpeningObservers(); NotifyPopupOpeningObservers();
WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame); WebLocalFrameImpl* webframe = WebLocalFrameImpl::FromFrame(frame);
if (webframe->Client()) { if (webframe->Client()) {
if (UserGestureIndicator::ProcessingUserGesture())
UserGestureIndicator::SetTimeoutPolicy(UserGestureToken::kHasPaused);
WebString actual_value; WebString actual_value;
bool ok = webframe->Client()->RunModalPromptDialog(message, default_value, bool ok = webframe->Client()->RunModalPromptDialog(message, default_value,
&actual_value); &actual_value);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment