Miscellaneous permissions cleanup.
This patch:
* Introduces a new method PermissionRequest::IsDuplicateOf, rather than
relying on comparing the result of GetMessageTextFragment (which
returns a human-readable string) to determine whether two requests are
duplicates.
* Makes PermissionRequest::GetMessageTextFragment desktop-only, as it
was only used elsewhere in the aforementioned duplicates logic.
* Uses std::u16string in MockPermissionRequest everywhere.
* And deletes a few bits of unused code.
Bug: 1110905
Change-Id: I39704d74d9456674a30c9483ed10423c84e998f6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2778492
Commit-Queue: Bret Sepulveda <[email protected]>
Reviewed-by: Xiaohan Wang <[email protected]>
Reviewed-by: Xing Liu <[email protected]>
Reviewed-by: Dana Fried <[email protected]>
Reviewed-by: Ben Wells <[email protected]>
Reviewed-by: Olesia Marukhno <[email protected]>
Reviewed-by: Kamila Hasanbega <[email protected]>
Reviewed-by: Ravjit Singh Uppal <[email protected]>
Cr-Commit-Position: refs/heads/master@{#874233}
diff --git a/components/permissions/contexts/geolocation_permission_context_unittest.cc b/components/permissions/contexts/geolocation_permission_context_unittest.cc
index c82e785..03c6f54 100644
--- a/components/permissions/contexts/geolocation_permission_context_unittest.cc
+++ b/components/permissions/contexts/geolocation_permission_context_unittest.cc
@@ -424,8 +424,12 @@
PermissionRequestManager* manager =
PermissionRequestManager::FromWebContents(web_contents());
PermissionRequest* request = manager->Requests().front();
+#if defined(OS_ANDROID)
+ return request->GetMessageText();
+#else
return base::ASCIIToUTF16(request->GetOrigin().spec()) +
request->GetMessageTextFragment();
+#endif
}
// Tests ----------------------------------------------------------------------
diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc
index c3766a1..699025e 100644
--- a/components/permissions/permission_request.cc
+++ b/components/permissions/permission_request.cc
@@ -10,6 +10,11 @@
PermissionRequest::PermissionRequest() {}
+bool PermissionRequest::IsDuplicateOf(PermissionRequest* other_request) const {
+ return GetRequestType() == other_request->GetRequestType() &&
+ GetOrigin() == other_request->GetOrigin();
+}
+
PermissionRequestGestureType PermissionRequest::GetGestureType() const {
return PermissionRequestGestureType::UNKNOWN;
}
@@ -24,14 +29,4 @@
}
#endif
-#if defined(OS_ANDROID)
-std::u16string PermissionRequest::GetQuietTitleText() const {
- return std::u16string();
-}
-
-std::u16string PermissionRequest::GetQuietMessageText() const {
- return GetMessageText();
-}
-#endif
-
} // namespace permissions
diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h
index 65523f9..54f0fb4b 100644
--- a/components/permissions/permission_request.h
+++ b/components/permissions/permission_request.h
@@ -33,31 +33,25 @@
// The type of this request.
virtual RequestType GetRequestType() const = 0;
+ // Whether |this| and |other_request| are duplicates and therefore don't both
+ // need to be shown in the UI.
+ virtual bool IsDuplicateOf(PermissionRequest* other_request) const;
+
#if defined(OS_ANDROID)
// Returns the full prompt text for this permission. This is currently only
// used on Android.
virtual std::u16string GetMessageText() const = 0;
-
- // Returns the title of this permission as text when the permission request is
- // displayed as a quiet prompt. Only used on Android. By default it returns
- // the same value as |GetTitleText| unless overridden.
- virtual std::u16string GetQuietTitleText() const;
-
- // Returns the full prompt text for this permission as text when the
- // permission request is displayed as a quiet prompt. Only used on Android. By
- // default it returns the same value as |GetMessageText| unless overridden.
- virtual std::u16string GetQuietMessageText() const;
#endif
#if !defined(OS_ANDROID)
// Returns the short text for the chip button related to this permission.
virtual base::Optional<std::u16string> GetChipText() const;
-#endif
// Returns the shortened prompt text for this permission. The permission
// bubble may coalesce different requests, and if it does, this text will
// be displayed next to an image and indicate the user grants the permission.
virtual std::u16string GetMessageTextFragment() const = 0;
+#endif
// Get the origin on whose behalf this permission request is being made.
virtual GURL GetOrigin() const = 0;
diff --git a/components/permissions/permission_request_impl.cc b/components/permissions/permission_request_impl.cc
index c670f1be..918449e 100644
--- a/components/permissions/permission_request_impl.cc
+++ b/components/permissions/permission_request_impl.cc
@@ -91,30 +91,48 @@
url_formatter::FormatUrlForSecurityDisplay(
GetOrigin(), url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
}
+#endif // defined(OS_ANDROID)
-std::u16string PermissionRequestImpl::GetQuietTitleText() const {
- if (content_settings_type_ == ContentSettingsType::NOTIFICATIONS) {
- return l10n_util::GetStringFUTF16(
- IDS_NOTIFICATION_QUIET_PERMISSION_PROMPT_TITLE,
- url_formatter::FormatUrlForSecurityDisplay(
- GetOrigin(), url_formatter::SchemeDisplay::OMIT_CRYPTOGRAPHIC));
+#if !defined(OS_ANDROID)
+base::Optional<std::u16string> PermissionRequestImpl::GetChipText() const {
+ int message_id;
+ switch (content_settings_type_) {
+ case ContentSettingsType::GEOLOCATION:
+ message_id = IDS_GEOLOCATION_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::NOTIFICATIONS:
+ message_id = IDS_NOTIFICATION_PERMISSIONS_CHIP;
+ break;
+ case ContentSettingsType::MIDI_SYSEX:
+ message_id = IDS_MIDI_SYSEX_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::MEDIASTREAM_MIC:
+ message_id = IDS_MEDIA_CAPTURE_AUDIO_ONLY_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::MEDIASTREAM_CAMERA:
+ message_id = IDS_MEDIA_CAPTURE_VIDEO_ONLY_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::CLIPBOARD_READ_WRITE:
+ message_id = IDS_CLIPBOARD_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::VR:
+ message_id = IDS_VR_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::AR:
+ message_id = IDS_AR_PERMISSION_CHIP;
+ break;
+ case ContentSettingsType::IDLE_DETECTION:
+ message_id = IDS_IDLE_DETECTION_PERMISSION_CHIP;
+ break;
+ default:
+ // TODO(bsep): We don't actually want to support having no string in the
+ // long term, but writing them takes time. In the meantime, we fall back
+ // to the existing UI when the string is missing.
+ return base::nullopt;
}
-
- NOTREACHED();
- return std::u16string();
+ return l10n_util::GetStringUTF16(message_id);
}
-std::u16string PermissionRequestImpl::GetQuietMessageText() const {
- if (content_settings_type_ == ContentSettingsType::NOTIFICATIONS) {
- return l10n_util::GetStringUTF16(
- IDS_NOTIFICATION_QUIET_PERMISSION_PROMPT_MESSAGE);
- }
-
- NOTREACHED();
- return GetMessageText();
-}
-#endif
-
std::u16string PermissionRequestImpl::GetMessageTextFragment() const {
int message_id;
switch (content_settings_type_) {
@@ -127,7 +145,7 @@
case ContentSettingsType::MIDI_SYSEX:
message_id = IDS_MIDI_SYSEX_PERMISSION_FRAGMENT;
break;
-#if defined(OS_ANDROID) || BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(IS_CHROMEOS_ASH)
case ContentSettingsType::PROTECTED_MEDIA_IDENTIFIER:
message_id = IDS_PROTECTED_MEDIA_IDENTIFIER_PERMISSION_FRAGMENT;
break;
@@ -177,47 +195,7 @@
}
return l10n_util::GetStringUTF16(message_id);
}
-
-#if !defined(OS_ANDROID)
-base::Optional<std::u16string> PermissionRequestImpl::GetChipText() const {
- int message_id;
- switch (content_settings_type_) {
- case ContentSettingsType::GEOLOCATION:
- message_id = IDS_GEOLOCATION_PERMISSION_CHIP;
- break;
- case ContentSettingsType::NOTIFICATIONS:
- message_id = IDS_NOTIFICATION_PERMISSIONS_CHIP;
- break;
- case ContentSettingsType::MIDI_SYSEX:
- message_id = IDS_MIDI_SYSEX_PERMISSION_CHIP;
- break;
- case ContentSettingsType::MEDIASTREAM_MIC:
- message_id = IDS_MEDIA_CAPTURE_AUDIO_ONLY_PERMISSION_CHIP;
- break;
- case ContentSettingsType::MEDIASTREAM_CAMERA:
- message_id = IDS_MEDIA_CAPTURE_VIDEO_ONLY_PERMISSION_CHIP;
- break;
- case ContentSettingsType::CLIPBOARD_READ_WRITE:
- message_id = IDS_CLIPBOARD_PERMISSION_CHIP;
- break;
- case ContentSettingsType::VR:
- message_id = IDS_VR_PERMISSION_CHIP;
- break;
- case ContentSettingsType::AR:
- message_id = IDS_AR_PERMISSION_CHIP;
- break;
- case ContentSettingsType::IDLE_DETECTION:
- message_id = IDS_IDLE_DETECTION_PERMISSION_CHIP;
- break;
- default:
- // TODO(bsep): We don't actually want to support having no string in the
- // long term, but writing them takes time. In the meantime, we fall back
- // to the existing UI when the string is missing.
- return base::nullopt;
- }
- return l10n_util::GetStringUTF16(message_id);
-}
-#endif
+#endif // !defined(OS_ANDROID)
GURL PermissionRequestImpl::GetOrigin() const {
return request_origin_;
diff --git a/components/permissions/permission_request_impl.h b/components/permissions/permission_request_impl.h
index 6695a45..2195d6f 100644
--- a/components/permissions/permission_request_impl.h
+++ b/components/permissions/permission_request_impl.h
@@ -40,13 +40,10 @@
RequestType GetRequestType() const override;
#if defined(OS_ANDROID)
std::u16string GetMessageText() const override;
- std::u16string GetQuietTitleText() const override;
- std::u16string GetQuietMessageText() const override;
-#endif
-#if !defined(OS_ANDROID)
+#else
base::Optional<std::u16string> GetChipText() const override;
-#endif
std::u16string GetMessageTextFragment() const override;
+#endif
GURL GetOrigin() const override;
void PermissionGranted(bool is_one_time) override;
void PermissionDenied() override;
diff --git a/components/permissions/permission_request_manager.cc b/components/permissions/permission_request_manager.cc
index c4c308f..f4bf8be5 100644
--- a/components/permissions/permission_request_manager.cc
+++ b/components/permissions/permission_request_manager.cc
@@ -69,16 +69,6 @@
namespace {
-bool IsMessageTextEqual(PermissionRequest* a, PermissionRequest* b) {
- if (a == b)
- return true;
- if (a->GetMessageTextFragment() == b->GetMessageTextFragment() &&
- a->GetOrigin() == b->GetOrigin()) {
- return true;
- }
- return false;
-}
-
bool IsMediaRequest(RequestType type) {
#if !defined(OS_ANDROID)
if (type == RequestType::kCameraPanTiltZoom)
@@ -704,11 +694,11 @@
PermissionRequest* PermissionRequestManager::GetExistingRequest(
PermissionRequest* request) {
for (PermissionRequest* existing_request : requests_) {
- if (IsMessageTextEqual(existing_request, request))
+ if (request->IsDuplicateOf(existing_request))
return existing_request;
}
for (PermissionRequest* queued_request : queued_requests_) {
- if (IsMessageTextEqual(queued_request, request))
+ if (request->IsDuplicateOf(queued_request))
return queued_request;
}
return nullptr;
diff --git a/components/permissions/permission_request_manager_unittest.cc b/components/permissions/permission_request_manager_unittest.cc
index 8a36803..a8a146ef 100644
--- a/components/permissions/permission_request_manager_unittest.cc
+++ b/components/permissions/permission_request_manager_unittest.cc
@@ -37,34 +37,33 @@
public ::testing::WithParamInterface<bool> {
public:
PermissionRequestManagerTest()
- : content::RenderViewHostTestHarness(),
- request1_("test1",
+ : request1_(u"test1",
RequestType::kDiskQuota,
PermissionRequestGestureType::GESTURE),
- request2_("test2",
+ request2_(u"test2",
RequestType::kMultipleDownloads,
PermissionRequestGestureType::NO_GESTURE),
- request_mic_("mic",
+ request_mic_(u"mic",
RequestType::kMicStream,
PermissionRequestGestureType::NO_GESTURE),
- request_camera_("cam",
+ request_camera_(u"cam",
RequestType::kCameraStream,
PermissionRequestGestureType::NO_GESTURE),
#if !defined(OS_ANDROID)
- request_ptz_("ptz",
+ request_ptz_(u"ptz",
RequestType::kCameraPanTiltZoom,
PermissionRequestGestureType::NO_GESTURE),
#endif
- iframe_request_same_domain_("iframe",
+ iframe_request_same_domain_(u"iframe",
RequestType::kNotifications,
GURL("http://www.google.com/some/url")),
- iframe_request_other_domain_("iframe",
+ iframe_request_other_domain_(u"iframe",
RequestType::kGeolocation,
GURL("http://www.youtube.com")),
- iframe_request_camera_other_domain_("iframe",
+ iframe_request_camera_other_domain_(u"iframe",
RequestType::kCameraStream,
GURL("http://www.youtube.com")),
- iframe_request_mic_other_domain_("iframe",
+ iframe_request_mic_other_domain_(u"iframe",
RequestType::kMicStream,
GURL("http://www.youtube.com")) {
feature_list_.InitWithFeatureState(permissions::features::kPermissionChip,
@@ -483,33 +482,33 @@
WaitForBubbleToBeShown();
manager_->AddRequest(web_contents()->GetMainFrame(), &request2_);
- MockPermissionRequest dupe_request("test1");
- manager_->AddRequest(web_contents()->GetMainFrame(), &dupe_request);
- EXPECT_FALSE(dupe_request.finished());
+ auto dupe_request = request1_.CreateDuplicateRequest();
+ manager_->AddRequest(web_contents()->GetMainFrame(), dupe_request.get());
+ EXPECT_FALSE(dupe_request->finished());
EXPECT_FALSE(request1_.finished());
- MockPermissionRequest dupe_request2("test2");
- manager_->AddRequest(web_contents()->GetMainFrame(), &dupe_request2);
- EXPECT_FALSE(dupe_request2.finished());
+ auto dupe_request2 = request2_.CreateDuplicateRequest();
+ manager_->AddRequest(web_contents()->GetMainFrame(), dupe_request2.get());
+ EXPECT_FALSE(dupe_request2->finished());
EXPECT_FALSE(request2_.finished());
WaitForBubbleToBeShown();
Accept();
if (GetParam()) {
- EXPECT_TRUE(dupe_request2.finished());
+ EXPECT_TRUE(dupe_request2->finished());
EXPECT_TRUE(request2_.finished());
} else {
- EXPECT_TRUE(dupe_request.finished());
+ EXPECT_TRUE(dupe_request->finished());
EXPECT_TRUE(request1_.finished());
}
WaitForBubbleToBeShown();
Accept();
if (GetParam()) {
- EXPECT_TRUE(dupe_request.finished());
+ EXPECT_TRUE(dupe_request->finished());
EXPECT_TRUE(request1_.finished());
} else {
- EXPECT_TRUE(dupe_request2.finished());
+ EXPECT_TRUE(dupe_request2->finished());
EXPECT_TRUE(request2_.finished());
}
}
@@ -765,7 +764,7 @@
MockNotificationPermissionUiSelector::CreateForManager(
manager_, test.quiet_ui_reason, test.async);
- MockPermissionRequest request("foo", RequestType::kNotifications,
+ MockPermissionRequest request(u"foo", RequestType::kNotifications,
PermissionRequestGestureType::GESTURE);
manager_->AddRequest(web_contents()->GetMainFrame(), &request);
@@ -787,14 +786,14 @@
manager_->clear_notification_permission_ui_selector_for_testing();
MockNotificationPermissionUiSelector::CreateForManager(
manager_, QuietUiReason::kEnabledInPrefs, true);
- MockPermissionRequest request1("request1", RequestType::kNotifications,
+ MockPermissionRequest request1(u"request1", RequestType::kNotifications,
PermissionRequestGestureType::GESTURE);
manager_->AddRequest(web_contents()->GetMainFrame(), &request1);
WaitForBubbleToBeShown();
EXPECT_TRUE(manager_->ShouldCurrentRequestUseQuietUI());
Accept();
- MockPermissionRequest request2("request2", RequestType::kNotifications,
+ MockPermissionRequest request2(u"request2", RequestType::kNotifications,
PermissionRequestGestureType::GESTURE);
manager_->clear_notification_permission_ui_selector_for_testing();
MockNotificationPermissionUiSelector::CreateForManager(
@@ -860,7 +859,7 @@
test.simulate_delayed_decision[i]);
}
- MockPermissionRequest request("foo", RequestType::kNotifications,
+ MockPermissionRequest request(u"foo", RequestType::kNotifications,
PermissionRequestGestureType::GESTURE);
manager_->AddRequest(web_contents()->GetMainFrame(), &request);
@@ -918,7 +917,7 @@
false /* async */, test.prediction_likelihoods[i]);
}
- MockPermissionRequest request("foo", RequestType::kNotifications,
+ MockPermissionRequest request(u"foo", RequestType::kNotifications,
PermissionRequestGestureType::GESTURE);
manager_->AddRequest(web_contents()->GetMainFrame(), &request);
diff --git a/components/permissions/quota_permission_context_impl.cc b/components/permissions/quota_permission_context_impl.cc
index eb1b6447a..d2acc7e 100644
--- a/components/permissions/quota_permission_context_impl.cc
+++ b/components/permissions/quota_permission_context_impl.cc
@@ -54,10 +54,12 @@
private:
// PermissionRequest:
RequestType GetRequestType() const override;
+ bool IsDuplicateOf(PermissionRequest* other_request) const override;
#if defined(OS_ANDROID)
std::u16string GetMessageText() const override;
-#endif
+#else
std::u16string GetMessageTextFragment() const override;
+#endif
GURL GetOrigin() const override;
void PermissionGranted(bool is_one_time) override;
void PermissionDenied() override;
@@ -91,6 +93,16 @@
return RequestType::kDiskQuota;
}
+bool QuotaPermissionRequest::IsDuplicateOf(
+ PermissionRequest* other_request) const {
+ // The downcast here is safe because PermissionRequest::IsDuplicateOf ensures
+ // that both requests are of type kDiskQuota.
+ return permissions::PermissionRequest::IsDuplicateOf(other_request) &&
+ is_large_quota_request_ ==
+ static_cast<QuotaPermissionRequest*>(other_request)
+ ->is_large_quota_request_;
+}
+
#if defined(OS_ANDROID)
std::u16string QuotaPermissionRequest::GetMessageText() const {
// If the site requested larger quota than this threshold, show a different
@@ -100,11 +112,11 @@
: IDS_REQUEST_QUOTA_INFOBAR_TEXT),
url_formatter::FormatUrlForSecurityDisplay(origin_url_));
}
-#endif
-
+#else
std::u16string QuotaPermissionRequest::GetMessageTextFragment() const {
return l10n_util::GetStringUTF16(IDS_REQUEST_QUOTA_PERMISSION_FRAGMENT);
}
+#endif // !defined(OS_ANDROID)
GURL QuotaPermissionRequest::GetOrigin() const {
return origin_url_;
diff --git a/components/permissions/test/mock_permission_prompt.cc b/components/permissions/test/mock_permission_prompt.cc
index 427ca23..5f4c8c73 100644
--- a/components/permissions/test/mock_permission_prompt.cc
+++ b/components/permissions/test/mock_permission_prompt.cc
@@ -46,15 +46,15 @@
Delegate* delegate)
: factory_(factory), delegate_(delegate) {
for (const PermissionRequest* request : delegate_->Requests()) {
- // The actual prompt will call these, so test they're sane.
- EXPECT_FALSE(request->GetMessageTextFragment().empty());
RequestType request_type = request->GetRequestType();
+ // The actual prompt will call these, so test they're sane.
#if defined(OS_ANDROID)
// For kStorageAccess, the prompt itself calculates the message text.
if (request_type != permissions::RequestType::kStorageAccess)
EXPECT_FALSE(request->GetMessageText().empty());
EXPECT_NE(0, permissions::GetIconId(request_type));
#else
+ EXPECT_FALSE(request->GetMessageTextFragment().empty());
EXPECT_FALSE(permissions::GetIconId(request_type).is_empty());
#endif
}
diff --git a/components/permissions/test/mock_permission_request.cc b/components/permissions/test/mock_permission_request.cc
index d844a2c..3cdcf2b 100644
--- a/components/permissions/test/mock_permission_request.cc
+++ b/components/permissions/test/mock_permission_request.cc
@@ -6,7 +6,6 @@
#include <string>
-#include "base/strings/utf_string_conversions.h"
#include "components/permissions/request_type.h"
#if defined(OS_ANDROID)
@@ -18,69 +17,63 @@
namespace permissions {
MockPermissionRequest::MockPermissionRequest()
- : MockPermissionRequest("test",
- "button",
- "button",
+ : MockPermissionRequest(u"test",
GURL("http://www.google.com"),
RequestType::kNotifications,
PermissionRequestGestureType::UNKNOWN,
ContentSettingsType::NOTIFICATIONS) {}
-MockPermissionRequest::MockPermissionRequest(const std::string& text)
+MockPermissionRequest::MockPermissionRequest(const std::u16string& text)
: MockPermissionRequest(text,
- "button",
- "button",
GURL("http://www.google.com"),
RequestType::kNotifications,
PermissionRequestGestureType::UNKNOWN,
ContentSettingsType::NOTIFICATIONS) {}
MockPermissionRequest::MockPermissionRequest(
- const std::string& text,
+ const std::u16string& text,
RequestType request_type,
PermissionRequestGestureType gesture_type)
: MockPermissionRequest(text,
- "button",
- "button",
GURL("http://www.google.com"),
request_type,
gesture_type,
ContentSettingsType::NOTIFICATIONS) {}
-MockPermissionRequest::MockPermissionRequest(const std::string& text,
+MockPermissionRequest::MockPermissionRequest(const std::u16string& text,
RequestType request_type,
const GURL& url)
: MockPermissionRequest(text,
- "button",
- "button",
url,
request_type,
PermissionRequestGestureType::UNKNOWN,
ContentSettingsType::NOTIFICATIONS) {}
-MockPermissionRequest::MockPermissionRequest(const std::string& text,
- const std::string& accept_label,
- const std::string& deny_label)
- : MockPermissionRequest(text,
- accept_label,
- deny_label,
- GURL("http://www.google.com"),
- RequestType::kNotifications,
- PermissionRequestGestureType::UNKNOWN,
- ContentSettingsType::NOTIFICATIONS) {}
-
MockPermissionRequest::MockPermissionRequest(
- const std::string& text,
+ const std::u16string& text,
ContentSettingsType content_settings_type)
: MockPermissionRequest(
text,
- "button",
- "button",
GURL("http://www.google.com"),
permissions::ContentSettingsTypeToRequestType(content_settings_type),
PermissionRequestGestureType::UNKNOWN,
content_settings_type) {}
+MockPermissionRequest::MockPermissionRequest(
+ const std::u16string& text,
+ const GURL& origin,
+ RequestType request_type,
+ PermissionRequestGestureType gesture_type,
+ ContentSettingsType content_settings_type)
+ : granted_(false),
+ cancelled_(false),
+ finished_(false),
+ request_type_(request_type),
+ gesture_type_(gesture_type),
+ content_settings_type_(content_settings_type),
+ text_(text),
+ origin_(origin.GetOrigin()) {}
+
MockPermissionRequest::~MockPermissionRequest() = default;
RequestType MockPermissionRequest::GetRequestType() const {
@@ -91,11 +84,11 @@
std::u16string MockPermissionRequest::GetMessageText() const {
return text_;
}
-#endif
-
+#else
std::u16string MockPermissionRequest::GetMessageTextFragment() const {
return text_;
}
+#endif
GURL MockPermissionRequest::GetOrigin() const {
return origin_;
@@ -138,24 +131,10 @@
return finished_;
}
-MockPermissionRequest::MockPermissionRequest(
- const std::string& text,
- const std::string& accept_label,
- const std::string& deny_label,
- const GURL& origin,
- RequestType request_type,
- PermissionRequestGestureType gesture_type,
- ContentSettingsType content_settings_type)
- : granted_(false),
- cancelled_(false),
- finished_(false),
- request_type_(request_type),
- gesture_type_(gesture_type),
- content_settings_type_(content_settings_type) {
- text_ = base::UTF8ToUTF16(text);
- accept_label_ = base::UTF8ToUTF16(accept_label);
- deny_label_ = base::UTF8ToUTF16(deny_label);
- origin_ = origin.GetOrigin();
+std::unique_ptr<MockPermissionRequest>
+MockPermissionRequest::CreateDuplicateRequest() const {
+ return std::make_unique<MockPermissionRequest>(
+ text_, origin_, request_type_, gesture_type_, content_settings_type_);
}
} // namespace permissions
diff --git a/components/permissions/test/mock_permission_request.h b/components/permissions/test/mock_permission_request.h
index 36a73f3..8478da6 100644
--- a/components/permissions/test/mock_permission_request.h
+++ b/components/permissions/test/mock_permission_request.h
@@ -17,18 +17,20 @@
class MockPermissionRequest : public PermissionRequest {
public:
MockPermissionRequest();
- explicit MockPermissionRequest(const std::string& text);
- MockPermissionRequest(const std::string& text,
+ explicit MockPermissionRequest(const std::u16string& text);
+ MockPermissionRequest(const std::u16string& text,
RequestType request_type,
PermissionRequestGestureType gesture_type);
- MockPermissionRequest(const std::string& text,
+ MockPermissionRequest(const std::u16string& text,
RequestType request_type,
const GURL& url);
- MockPermissionRequest(const std::string& text,
- const std::string& accept_label,
- const std::string& deny_label);
- MockPermissionRequest(const std::string& text,
+ MockPermissionRequest(const std::u16string& text,
ContentSettingsType content_settings_type_);
+ MockPermissionRequest(const std::u16string& text,
+ const GURL& url,
+ RequestType request_type,
+ PermissionRequestGestureType gesture_type,
+ ContentSettingsType content_settings_type);
~MockPermissionRequest() override;
@@ -36,8 +38,9 @@
#if defined(OS_ANDROID)
std::u16string GetMessageText() const override;
-#endif
+#else
std::u16string GetMessageTextFragment() const override;
+#endif
GURL GetOrigin() const override;
void PermissionGranted(bool is_one_time) override;
@@ -51,14 +54,9 @@
bool cancelled();
bool finished();
+ std::unique_ptr<MockPermissionRequest> CreateDuplicateRequest() const;
+
private:
- MockPermissionRequest(const std::string& text,
- const std::string& accept_label,
- const std::string& deny_label,
- const GURL& url,
- RequestType request_type,
- PermissionRequestGestureType gesture_type,
- ContentSettingsType content_settings_type);
bool granted_;
bool cancelled_;
bool finished_;
@@ -67,8 +65,6 @@
ContentSettingsType content_settings_type_;
std::u16string text_;
- std::u16string accept_label_;
- std::u16string deny_label_;
GURL origin_;
};