Skip to content

Commit

Permalink
[Messages] Set safety tip message as an urgent priority message
Browse files Browse the repository at this point in the history
This CL:
1. adds the native support of message priority
2. turns safety-tip message to an urgent priority message

Urgent-priority message means:
1. if multiple messages in the queue, urgent priority message should be
displayed before others
2. if a normal priority message is on the screen, it should be temporarily
hidden and the urgent-priority one should be displayed instead.

Bug: 1188981
Change-Id: I625915279e0f096cf6355cf3788ccbb60f8a2d49
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2976050
Commit-Queue: Lijin Shen <[email protected]>
Reviewed-by: Mohamed Amir Yosef <[email protected]>
Reviewed-by: Vasilii Sukhanov <[email protected]>
Reviewed-by: Charlie Harrison <[email protected]>
Reviewed-by: Kyle Milka <[email protected]>
Reviewed-by: Joe DeBlasio <[email protected]>
Reviewed-by: Pavel Yatsuk <[email protected]>
Cr-Commit-Position: refs/heads/master@{#895717}
  • Loading branch information
Lijin Shen authored and Chromium LUCI CQ committed Jun 24, 2021
1 parent 4aa6342 commit 8567af9
Show file tree
Hide file tree
Showing 11 changed files with 26 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ void AndroidNotificationHandler::DisplayNewEntries(

// TODO(crbug.com/1220129): A valid WebContents shouldn't be needed here.
messages::MessageDispatcherBridge::Get()->EnqueueMessage(
message_.get(), web_contents, messages::MessageScopeType::WINDOW);
message_.get(), web_contents, messages::MessageScopeType::WINDOW,
messages::MessagePriority::kNormal);
} else {
JNIEnv* env = AttachCurrentThread();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ void SaveAddressProfileMessageController::DisplayMessage(
ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_AUTOFILL_ADDRESS));

messages::MessageDispatcherBridge::Get()->EnqueueMessage(
message_.get(), web_contents, messages::MessageScopeType::WEB_CONTENTS);
message_.get(), web_contents, messages::MessageScopeType::WEB_CONTENTS,
messages::MessagePriority::kNormal);
}

bool SaveAddressProfileMessageController::IsMessageDisplayed() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,5 +60,6 @@ void GeneratedPasswordSavedMessageDelegate::ShowPrompt(
message_->SetIconResourceId(
ResourceMapper::MapToJavaDrawableId(IDR_ANDROID_INFOBAR_SAVE_PASSWORD));
messages::MessageDispatcherBridge::Get()->EnqueueMessage(
message_.get(), web_contents, messages::MessageScopeType::NAVIGATION);
message_.get(), web_contents, messages::MessageScopeType::NAVIGATION,
messages::MessagePriority::kNormal);
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ void SavePasswordMessageDelegate::DisplaySavePasswordPromptInternal(
CreateMessage(update_password);
RecordMessageShownMetrics();
messages::MessageDispatcherBridge::Get()->EnqueueMessage(
message_.get(), web_contents_, messages::MessageScopeType::NAVIGATION);
message_.get(), web_contents_, messages::MessageScopeType::NAVIGATION,
messages::MessagePriority::kNormal);
}

void SavePasswordMessageDelegate::CreateMessage(bool update_password) {
Expand Down
3 changes: 2 additions & 1 deletion chrome/browser/reputation/safety_tip_message_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ void SafetyTipMessageDelegate::DisplaySafetyTipPrompt(
message_->SetDuration(60000);

messages::MessageDispatcherBridge::Get()->EnqueueMessage(
message_.get(), web_contents_, messages::MessageScopeType::NAVIGATION);
message_.get(), web_contents_, messages::MessageScopeType::NAVIGATION,
messages::MessagePriority::kUrgent);
}

void SafetyTipMessageDelegate::HandleLeaveSiteClick() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ void SafetyTipMessageDelegateTest::EnqueueMessage(
bool enqueue_expected,
security_state::SafetyTipStatus safety_tip_status) {
if (enqueue_expected) {
EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage);
EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage)
.WillOnce(testing::Return(true));
} else {
EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ bool PopupBlockedMessageDelegate::ShowMessage(
// or destroyed, popup blocked message will not be displayed and the
// method will return false.
if (!messages::MessageDispatcherBridge::Get()->EnqueueMessage(
message.get(), web_contents_,
messages::MessageScopeType::NAVIGATION)) {
message.get(), web_contents_, messages::MessageScopeType::NAVIGATION,
messages::MessagePriority::kNormal)) {
return false;
}

Expand Down
7 changes: 4 additions & 3 deletions components/messages/android/message_dispatcher_bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@ void MessageDispatcherBridge::SetInstanceForTesting(

bool MessageDispatcherBridge::EnqueueMessage(MessageWrapper* message,
content::WebContents* web_contents,
MessageScopeType scopeType) {
MessageScopeType scope_type,
MessagePriority priority) {
JNIEnv* env = base::android::AttachCurrentThread();
if (Java_MessageDispatcherBridge_enqueueMessage(
env, message->GetJavaMessageWrapper(),
web_contents->GetJavaWebContents(), static_cast<int>(scopeType),
false) == JNI_TRUE) {
web_contents->GetJavaWebContents(), static_cast<int>(scope_type),
priority == MessagePriority::kUrgent) == JNI_TRUE) {
message->SetMessageEnqueued();
return true;
}
Expand Down
3 changes: 2 additions & 1 deletion components/messages/android/message_dispatcher_bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ class MessageDispatcherBridge {

virtual bool EnqueueMessage(MessageWrapper* message,
content::WebContents* web_contents,
MessageScopeType scopeType);
MessageScopeType scope_type,
MessagePriority priority);
virtual void DismissMessage(MessageWrapper* message,
content::WebContents* web_contents,
DismissReason dismiss_reason);
Expand Down
4 changes: 4 additions & 0 deletions components/messages/android/message_enums.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ enum class DismissReason {
COUNT
};

// "Urgent" means the user should take actions ASAP, such as responding to
// permissions or safety warnings.
enum class MessagePriority { kUrgent, kNormal };

// The constants of message scope type.
//
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.components.messages
Expand Down
3 changes: 2 additions & 1 deletion components/messages/android/mock_message_dispatcher_bridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ class MockMessageDispatcherBridge : public MessageDispatcherBridge {
EnqueueMessage,
(MessageWrapper * message,
content::WebContents* web_contents,
MessageScopeType scopeType),
MessageScopeType scope_type,
MessagePriority priority),
(override));
MOCK_METHOD(void,
DismissMessage,
Expand Down

0 comments on commit 8567af9

Please sign in to comment.