Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2123)

Unified Diff: chrome/browser/permissions/permission_request_manager_unittest.cc

Issue 2913393002: Only show grouped permission bubbles for mic/camera permissions (Closed)
Patch Set: Remove grouped requests Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/permissions/permission_request_manager_browsertest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/permissions/permission_request_manager_unittest.cc
diff --git a/chrome/browser/permissions/permission_request_manager_unittest.cc b/chrome/browser/permissions/permission_request_manager_unittest.cc
index a9d6cc1bb45fe60856f5dd8d828f49ec047521f6..54fd98484cc2ef2e6daa3b7b98ed3319b8af5599 100644
--- a/chrome/browser/permissions/permission_request_manager_unittest.cc
+++ b/chrome/browser/permissions/permission_request_manager_unittest.cc
@@ -28,10 +28,22 @@ class PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness {
request2_("test2",
PermissionRequestType::DOWNLOAD,
PermissionRequestGestureType::NO_GESTURE),
+ request_mic_("mic",
+ PermissionRequestType::PERMISSION_MEDIASTREAM_MIC,
+ PermissionRequestGestureType::NO_GESTURE),
+ request_camera_("cam",
+ PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA,
+ PermissionRequestGestureType::NO_GESTURE),
iframe_request_same_domain_("iframe",
+ PermissionRequestType::UNKNOWN,
GURL("http://www.google.com/some/url")),
- iframe_request_other_domain_("iframe", GURL("http://www.youtube.com")) {
- }
+ iframe_request_other_domain_("iframe",
+ PermissionRequestType::UNKNOWN,
+ GURL("http://www.youtube.com")),
+ iframe_request_mic_other_domain_(
+ "iframe",
+ PermissionRequestType::PERMISSION_MEDIASTREAM_MIC,
+ GURL("http://www.youtube.com")) {}
~PermissionRequestManagerTest() override {}
void SetUp() override {
@@ -71,7 +83,7 @@ class PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness {
base::RunLoop().RunUntilIdle();
}
- void WaitForCoalescing() {
+ void WaitForBubbleToBeShown() {
manager_->DocumentOnLoadCompletedInMainFrame();
base::RunLoop().RunUntilIdle();
}
@@ -88,8 +100,11 @@ class PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness {
protected:
MockPermissionRequest request1_;
MockPermissionRequest request2_;
+ MockPermissionRequest request_mic_;
+ MockPermissionRequest request_camera_;
MockPermissionRequest iframe_request_same_domain_;
MockPermissionRequest iframe_request_other_domain_;
+ MockPermissionRequest iframe_request_mic_other_domain_;
std::unique_ptr<PermissionRequestManager> manager_;
std::unique_ptr<MockPermissionPromptFactory> prompt_factory_;
};
@@ -97,7 +112,7 @@ class PermissionRequestManagerTest : public ChromeRenderViewHostTestHarness {
TEST_F(PermissionRequestManagerTest, SingleRequest) {
manager_->AddRequest(&request1_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
@@ -110,7 +125,7 @@ TEST_F(PermissionRequestManagerTest, SingleRequest) {
TEST_F(PermissionRequestManagerTest, SingleRequestViewFirst) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
@@ -120,27 +135,55 @@ TEST_F(PermissionRequestManagerTest, SingleRequestViewFirst) {
EXPECT_TRUE(request1_.granted());
}
-TEST_F(PermissionRequestManagerTest, TwoRequests) {
+// Most requests should never be grouped.
+TEST_F(PermissionRequestManagerTest, TwoRequestsUngrouped) {
manager_->AddRequest(&request1_);
manager_->AddRequest(&request2_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+
+ WaitForBubbleToBeShown();
+ EXPECT_TRUE(prompt_factory_->is_visible());
+ ASSERT_EQ(prompt_factory_->request_count(), 1);
+ Accept();
+ EXPECT_TRUE(request1_.granted());
+
+ WaitForBubbleToBeShown();
+ EXPECT_TRUE(prompt_factory_->is_visible());
+ ASSERT_EQ(prompt_factory_->request_count(), 1);
+ Accept();
+ EXPECT_TRUE(request2_.granted());
+}
+
+// Only mic/camera requests from the same origin should be grouped.
+TEST_F(PermissionRequestManagerTest, MicCameraGrouped) {
+ manager_->AddRequest(&request_mic_);
+ manager_->AddRequest(&request_camera_);
+ manager_->DisplayPendingRequests();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 2);
ToggleAccept(0, true);
- ToggleAccept(1, false);
+ ToggleAccept(1, true);
Accept();
- EXPECT_TRUE(request1_.granted());
- EXPECT_FALSE(request2_.granted());
+ EXPECT_TRUE(request_mic_.granted());
+ EXPECT_TRUE(request_camera_.granted());
+
+ // If the requests come from different origins, they should not be grouped.
+ manager_->AddRequest(&iframe_request_mic_other_domain_);
+ manager_->AddRequest(&request_camera_);
+ WaitForBubbleToBeShown();
+
+ EXPECT_TRUE(prompt_factory_->is_visible());
+ ASSERT_EQ(prompt_factory_->request_count(), 1);
}
TEST_F(PermissionRequestManagerTest, TwoRequestsTabSwitch) {
- manager_->AddRequest(&request1_);
- manager_->AddRequest(&request2_);
+ manager_->AddRequest(&request_mic_);
+ manager_->AddRequest(&request_camera_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 2);
@@ -152,43 +195,32 @@ TEST_F(PermissionRequestManagerTest, TwoRequestsTabSwitch) {
EXPECT_FALSE(prompt_factory_->is_visible());
MockTabSwitchBack();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 2);
Accept();
- EXPECT_TRUE(request1_.granted());
- EXPECT_FALSE(request2_.granted());
+ EXPECT_TRUE(request_mic_.granted());
+ EXPECT_FALSE(request_camera_.granted());
}
TEST_F(PermissionRequestManagerTest, NoRequests) {
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
}
TEST_F(PermissionRequestManagerTest, NoView) {
manager_->AddRequest(&request1_);
// Don't display the pending requests.
- WaitForCoalescing();
- EXPECT_FALSE(prompt_factory_->is_visible());
-}
-
-TEST_F(PermissionRequestManagerTest, TwoRequestsCoalesce) {
- manager_->DisplayPendingRequests();
- manager_->AddRequest(&request1_);
- manager_->AddRequest(&request2_);
+ WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
- WaitForCoalescing();
-
- EXPECT_TRUE(prompt_factory_->is_visible());
- ASSERT_EQ(prompt_factory_->request_count(), 2);
}
TEST_F(PermissionRequestManagerTest, TwoRequestsDoNotCoalesce) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
manager_->AddRequest(&request2_);
EXPECT_TRUE(prompt_factory_->is_visible());
@@ -198,14 +230,14 @@ TEST_F(PermissionRequestManagerTest, TwoRequestsDoNotCoalesce) {
TEST_F(PermissionRequestManagerTest, TwoRequestsShownInTwoBubbles) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
manager_->AddRequest(&request2_);
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
Accept();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
@@ -215,18 +247,17 @@ TEST_F(PermissionRequestManagerTest, TwoRequestsShownInTwoBubbles) {
TEST_F(PermissionRequestManagerTest, TestAddDuplicateRequest) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- manager_->AddRequest(&request2_);
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
- ASSERT_EQ(prompt_factory_->request_count(), 2);
+ ASSERT_EQ(prompt_factory_->request_count(), 1);
}
TEST_F(PermissionRequestManagerTest, SequentialRequests) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Accept();
@@ -235,7 +266,7 @@ TEST_F(PermissionRequestManagerTest, SequentialRequests) {
EXPECT_FALSE(prompt_factory_->is_visible());
manager_->AddRequest(&request2_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Accept();
EXPECT_FALSE(prompt_factory_->is_visible());
@@ -248,7 +279,7 @@ TEST_F(PermissionRequestManagerTest, SameRequestRejected) {
manager_->AddRequest(&request1_);
EXPECT_FALSE(request1_.finished());
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
}
@@ -268,7 +299,7 @@ TEST_F(PermissionRequestManagerTest, DuplicateRequestCancelled) {
TEST_F(PermissionRequestManagerTest, DuplicateQueuedRequest) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
manager_->AddRequest(&request2_);
MockPermissionRequest dupe_request("test1");
@@ -293,7 +324,7 @@ TEST_F(PermissionRequestManagerTest, DuplicateQueuedRequest) {
TEST_F(PermissionRequestManagerTest, ForgetRequestsOnPageNavigation) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
manager_->AddRequest(&request2_);
manager_->AddRequest(&iframe_request_other_domain_);
@@ -301,7 +332,7 @@ TEST_F(PermissionRequestManagerTest, ForgetRequestsOnPageNavigation) {
ASSERT_EQ(prompt_factory_->request_count(), 1);
NavigateAndCommit(GURL("http://www2.google.com/"));
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_FALSE(prompt_factory_->is_visible());
EXPECT_TRUE(request1_.finished());
@@ -320,7 +351,7 @@ TEST_F(PermissionRequestManagerTest, TestCancelQueued) {
EXPECT_FALSE(prompt_factory_->is_visible());
manager_->AddRequest(&request2_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
ASSERT_EQ(prompt_factory_->request_count(), 1);
}
@@ -328,13 +359,13 @@ TEST_F(PermissionRequestManagerTest, TestCancelQueued) {
TEST_F(PermissionRequestManagerTest, TestCancelWhileDialogShown) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
prompt_factory_->SetCanUpdateUi(true);
EXPECT_TRUE(prompt_factory_->is_visible());
EXPECT_FALSE(request1_.finished());
manager_->CancelRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(request1_.finished());
EXPECT_FALSE(prompt_factory_->is_visible());
}
@@ -343,7 +374,7 @@ TEST_F(PermissionRequestManagerTest, TestCancelWhileDialogShownNoUpdate) {
manager_->DisplayPendingRequests();
prompt_factory_->SetCanUpdateUi(false);
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
prompt_factory_->SetCanUpdateUi(false);
EXPECT_TRUE(prompt_factory_->is_visible());
@@ -357,7 +388,7 @@ TEST_F(PermissionRequestManagerTest, TestCancelWhileDialogShownNoUpdate) {
TEST_F(PermissionRequestManagerTest, TestCancelPendingRequest) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
manager_->AddRequest(&request2_);
EXPECT_TRUE(prompt_factory_->is_visible());
@@ -372,7 +403,7 @@ TEST_F(PermissionRequestManagerTest, TestCancelPendingRequest) {
TEST_F(PermissionRequestManagerTest, MainFrameNoRequestIFrameRequest) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&iframe_request_same_domain_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
WaitForFrameLoad();
EXPECT_TRUE(prompt_factory_->is_visible());
@@ -385,14 +416,19 @@ TEST_F(PermissionRequestManagerTest, MainFrameAndIFrameRequestSameDomain) {
manager_->AddRequest(&request1_);
manager_->AddRequest(&iframe_request_same_domain_);
WaitForFrameLoad();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
- ASSERT_EQ(prompt_factory_->request_count(), 2);
+ ASSERT_EQ(1, prompt_factory_->request_count());
Closing();
EXPECT_TRUE(request1_.finished());
- EXPECT_TRUE(iframe_request_same_domain_.finished());
+ EXPECT_FALSE(iframe_request_same_domain_.finished());
+ WaitForBubbleToBeShown();
+ EXPECT_TRUE(prompt_factory_->is_visible());
+ ASSERT_EQ(1, prompt_factory_->request_count());
+ Closing();
EXPECT_FALSE(prompt_factory_->is_visible());
+ EXPECT_TRUE(iframe_request_same_domain_.finished());
}
TEST_F(PermissionRequestManagerTest, MainFrameAndIFrameRequestOtherDomain) {
@@ -400,7 +436,7 @@ TEST_F(PermissionRequestManagerTest, MainFrameAndIFrameRequestOtherDomain) {
manager_->AddRequest(&request1_);
manager_->AddRequest(&iframe_request_other_domain_);
WaitForFrameLoad();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
Closing();
@@ -414,7 +450,7 @@ TEST_F(PermissionRequestManagerTest, MainFrameAndIFrameRequestOtherDomain) {
TEST_F(PermissionRequestManagerTest, IFrameRequestWhenMainRequestVisible) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
manager_->AddRequest(&iframe_request_same_domain_);
@@ -433,7 +469,7 @@ TEST_F(PermissionRequestManagerTest,
IFrameRequestOtherDomainWhenMainRequestVisible) {
manager_->DisplayPendingRequests();
manager_->AddRequest(&request1_);
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
EXPECT_TRUE(prompt_factory_->is_visible());
manager_->AddRequest(&iframe_request_other_domain_);
@@ -449,7 +485,7 @@ TEST_F(PermissionRequestManagerTest,
TEST_F(PermissionRequestManagerTest, RequestsDontNeedUserGesture) {
manager_->DisplayPendingRequests();
WaitForFrameLoad();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
manager_->AddRequest(&request1_);
manager_->AddRequest(&iframe_request_other_domain_);
manager_->AddRequest(&request2_);
@@ -463,7 +499,7 @@ TEST_F(PermissionRequestManagerTest, UMAForSimpleAcceptedGestureBubble) {
manager_->AddRequest(&request1_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
histograms.ExpectUniqueSample(
PermissionUmaUtil::kPermissionsPromptShown,
static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
@@ -499,7 +535,7 @@ TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedNoGestureBubble) {
manager_->AddRequest(&request2_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
histograms.ExpectTotalCount(
PermissionUmaUtil::kPermissionsPromptShownGesture, 0);
@@ -534,7 +570,7 @@ TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedBubbleAlternatePath) {
manager_->AddRequest(&request1_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
// No need to test UMA for showing prompts again, they were tested in
// UMAForSimpleAcceptedBubble.
@@ -549,10 +585,10 @@ TEST_F(PermissionRequestManagerTest, UMAForSimpleDeniedBubbleAlternatePath) {
TEST_F(PermissionRequestManagerTest, UMAForMergedAcceptedBubble) {
base::HistogramTester histograms;
- manager_->AddRequest(&request1_);
- manager_->AddRequest(&request2_);
+ manager_->AddRequest(&request_mic_);
+ manager_->AddRequest(&request_camera_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
histograms.ExpectUniqueSample(
PermissionUmaUtil::kPermissionsPromptShown,
@@ -560,11 +596,13 @@ TEST_F(PermissionRequestManagerTest, UMAForMergedAcceptedBubble) {
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_MIC),
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA),
1);
histograms.ExpectUniqueSample(
PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1);
@@ -583,21 +621,23 @@ TEST_F(PermissionRequestManagerTest, UMAForMergedAcceptedBubble) {
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_MIC),
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA),
1);
}
TEST_F(PermissionRequestManagerTest, UMAForMergedMixedBubble) {
base::HistogramTester histograms;
- manager_->AddRequest(&request1_);
- manager_->AddRequest(&request2_);
+ manager_->AddRequest(&request_mic_);
+ manager_->AddRequest(&request_camera_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
// No need to test UMA for showing prompts again, they were tested in
// UMAForMergedAcceptedBubble.
@@ -611,21 +651,23 @@ TEST_F(PermissionRequestManagerTest, UMAForMergedMixedBubble) {
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_MIC),
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA),
1);
}
TEST_F(PermissionRequestManagerTest, UMAForMergedDeniedBubble) {
base::HistogramTester histograms;
- manager_->AddRequest(&request1_);
- manager_->AddRequest(&request2_);
+ manager_->AddRequest(&request_mic_);
+ manager_->AddRequest(&request_camera_);
manager_->DisplayPendingRequests();
- WaitForCoalescing();
+ WaitForBubbleToBeShown();
// No need to test UMA for showing prompts again, they were tested in
// UMAForMergedAcceptedBubble.
@@ -639,10 +681,12 @@ TEST_F(PermissionRequestManagerTest, UMAForMergedDeniedBubble) {
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::QUOTA),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_MIC),
1);
histograms.ExpectBucketCount(
PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
- static_cast<base::HistogramBase::Sample>(PermissionRequestType::DOWNLOAD),
+ static_cast<base::HistogramBase::Sample>(
+ PermissionRequestType::PERMISSION_MEDIASTREAM_CAMERA),
1);
}
« no previous file with comments | « chrome/browser/permissions/permission_request_manager_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698