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

Side by Side Diff: chrome/browser/ui/views/payments/payment_request_browsertest_base.cc

Issue 2859613002: Disable web payments API on blob: and data: schemes. (Closed)
Patch Set: Fix up Android test Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h" 5 #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iostream>
8 #include <memory> 9 #include <memory>
9 #include <string> 10 #include <string>
10 #include <utility> 11 #include <utility>
11 #include <vector> 12 #include <vector>
12 13
13 #include "base/bind.h" 14 #include "base/bind.h"
14 #include "base/bind_helpers.h" 15 #include "base/bind_helpers.h"
15 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
16 #include "base/run_loop.h" 17 #include "base/run_loop.h"
17 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 content::WebContents* web_contents = GetActiveWebContents(); 75 content::WebContents* web_contents = GetActiveWebContents();
75 service_manager::BinderRegistry* registry = 76 service_manager::BinderRegistry* registry =
76 web_contents->GetMainFrame()->GetInterfaceRegistry(); 77 web_contents->GetMainFrame()->GetInterfaceRegistry();
77 registry->RemoveInterface(payments::mojom::PaymentRequest::Name_); 78 registry->RemoveInterface(payments::mojom::PaymentRequest::Name_);
78 registry->AddInterface( 79 registry->AddInterface(
79 base::Bind(&PaymentRequestBrowserTestBase::CreatePaymentRequestForTest, 80 base::Bind(&PaymentRequestBrowserTestBase::CreatePaymentRequestForTest,
80 base::Unretained(this), web_contents)); 81 base::Unretained(this), web_contents));
81 } 82 }
82 83
83 void PaymentRequestBrowserTestBase::NavigateTo(const std::string& file_path) { 84 void PaymentRequestBrowserTestBase::NavigateTo(const std::string& file_path) {
84 ui_test_utils::NavigateToURL(browser(), https_server()->GetURL(file_path)); 85 ui_test_utils::NavigateToURL(browser(),
86 file_path.find("data:") == 0U
87 ? GURL(file_path)
88 : https_server()->GetURL(file_path));
85 } 89 }
86 90
87 void PaymentRequestBrowserTestBase::SetIncognito() { 91 void PaymentRequestBrowserTestBase::SetIncognito() {
88 is_incognito_ = true; 92 is_incognito_ = true;
89 } 93 }
90 94
91 void PaymentRequestBrowserTestBase::SetInvalidSsl() { 95 void PaymentRequestBrowserTestBase::SetInvalidSsl() {
92 is_valid_ssl_ = false; 96 is_valid_ssl_ = false;
93 } 97 }
94 98
95 void PaymentRequestBrowserTestBase::OnCanMakePaymentCalled() { 99 void PaymentRequestBrowserTestBase::OnCanMakePaymentCalled() {
96 if (event_observer_) 100 if (event_observer_)
97 event_observer_->Observe(DialogEvent::CAN_MAKE_PAYMENT_CALLED); 101 event_observer_->Observe(DialogEvent::CAN_MAKE_PAYMENT_CALLED);
98 } 102 }
99 103
100 void PaymentRequestBrowserTestBase::OnNotSupportedError() { 104 void PaymentRequestBrowserTestBase::OnNotSupportedError() {
101 if (event_observer_) 105 if (event_observer_)
102 event_observer_->Observe(DialogEvent::NOT_SUPPORTED_ERROR); 106 event_observer_->Observe(DialogEvent::NOT_SUPPORTED_ERROR);
103 } 107 }
104 108
109 void PaymentRequestBrowserTestBase::OnConnectionTerminated() {
110 if (event_observer_)
111 event_observer_->Observe(DialogEvent::DIALOG_CLOSED);
112 }
113
105 void PaymentRequestBrowserTestBase::OnDialogOpened() { 114 void PaymentRequestBrowserTestBase::OnDialogOpened() {
106 if (event_observer_) 115 if (event_observer_)
107 event_observer_->Observe(DialogEvent::DIALOG_OPENED); 116 event_observer_->Observe(DialogEvent::DIALOG_OPENED);
108 } 117 }
109 118
110 void PaymentRequestBrowserTestBase::OnOrderSummaryOpened() { 119 void PaymentRequestBrowserTestBase::OnOrderSummaryOpened() {
111 if (event_observer_) 120 if (event_observer_)
112 event_observer_->Observe(DialogEvent::ORDER_SUMMARY_OPENED); 121 event_observer_->Observe(DialogEvent::ORDER_SUMMARY_OPENED);
113 } 122 }
114 123
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 void PaymentRequestBrowserTestBase::OnSpecDoneUpdating() { 179 void PaymentRequestBrowserTestBase::OnSpecDoneUpdating() {
171 if (event_observer_) 180 if (event_observer_)
172 event_observer_->Observe(DialogEvent::SPEC_DONE_UPDATING); 181 event_observer_->Observe(DialogEvent::SPEC_DONE_UPDATING);
173 } 182 }
174 183
175 void PaymentRequestBrowserTestBase::OnCvcPromptShown() { 184 void PaymentRequestBrowserTestBase::OnCvcPromptShown() {
176 if (event_observer_) 185 if (event_observer_)
177 event_observer_->Observe(DialogEvent::CVC_PROMPT_SHOWN); 186 event_observer_->Observe(DialogEvent::CVC_PROMPT_SHOWN);
178 } 187 }
179 188
180 void PaymentRequestBrowserTestBase::OnWidgetDestroyed(views::Widget* widget) {
181 if (event_observer_)
182 event_observer_->Observe(DialogEvent::DIALOG_CLOSED);
183 }
184
185 void PaymentRequestBrowserTestBase::InvokePaymentRequestUI() { 189 void PaymentRequestBrowserTestBase::InvokePaymentRequestUI() {
186 ResetEventObserver(DialogEvent::DIALOG_OPENED); 190 ResetEventObserver(DialogEvent::DIALOG_OPENED);
187 191
188 content::WebContents* web_contents = GetActiveWebContents(); 192 content::WebContents* web_contents = GetActiveWebContents();
189 const std::string click_buy_button_js = 193 const std::string click_buy_button_js =
190 "(function() { document.getElementById('buy').click(); })();"; 194 "(function() { document.getElementById('buy').click(); })();";
191 ASSERT_TRUE(content::ExecuteScript(web_contents, click_buy_button_js)); 195 ASSERT_TRUE(content::ExecuteScript(web_contents, click_buy_button_js));
192 196
193 WaitForObservedEvent(); 197 WaitForObservedEvent();
194 198
195 // The web-modal dialog should be open. 199 // The web-modal dialog should be open.
196 web_modal::WebContentsModalDialogManager* web_contents_modal_dialog_manager = 200 web_modal::WebContentsModalDialogManager* web_contents_modal_dialog_manager =
197 web_modal::WebContentsModalDialogManager::FromWebContents(web_contents); 201 web_modal::WebContentsModalDialogManager::FromWebContents(web_contents);
198 EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive()); 202 EXPECT_TRUE(web_contents_modal_dialog_manager->IsDialogActive());
199 } 203 }
200 204
201 void PaymentRequestBrowserTestBase::ExpectBodyContains( 205 void PaymentRequestBrowserTestBase::ExpectBodyContains(
202 const std::vector<std::string>& expected_strings) { 206 const std::vector<std::string>& expected_strings) {
203 content::WebContents* web_contents = GetActiveWebContents(); 207 content::WebContents* web_contents = GetActiveWebContents();
204 const std::string extract_contents_js = 208 const std::string extract_contents_js =
205 "(function() { " 209 "(function() { "
206 "window.domAutomationController.send(window.document.body.textContent); " 210 "window.domAutomationController.send(window.document.body.textContent); "
207 "})()"; 211 "})()";
208 std::string contents; 212 std::string contents;
209 EXPECT_TRUE(content::ExecuteScriptAndExtractString( 213 EXPECT_TRUE(content::ExecuteScriptAndExtractString(
210 web_contents, extract_contents_js, &contents)); 214 web_contents, extract_contents_js, &contents));
211 for (const std::string& expected_string : expected_strings) { 215 for (const std::string& expected_string : expected_strings) {
212 EXPECT_NE(std::string::npos, contents.find(expected_string)) 216 EXPECT_NE(std::string::npos, contents.find(expected_string))
213 << "String not present: " << expected_string; 217 << "String \"" << expected_string
218 << "\" is not present in the content \"" << contents << "\"";
214 } 219 }
215 } 220 }
216 221
217 void PaymentRequestBrowserTestBase::ExpectBodyContains( 222 void PaymentRequestBrowserTestBase::ExpectBodyContains(
218 const std::vector<base::string16>& expected_strings) { 223 const std::vector<base::string16>& expected_strings) {
219 std::vector<std::string> converted(expected_strings.size()); 224 std::vector<std::string> converted(expected_strings.size());
220 std::transform(expected_strings.begin(), expected_strings.end(), 225 std::transform(expected_strings.begin(), expected_strings.end(),
221 converted.begin(), 226 converted.begin(),
222 [](const base::string16& s) { return base::UTF16ToUTF8(s); }); 227 [](const base::string16& s) { return base::UTF16ToUTF8(s); });
223 ExpectBodyContains(converted); 228 ExpectBodyContains(converted);
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 EXPECT_EQ(card_count + 1, personal_data_manager->GetCreditCards().size()); 404 EXPECT_EQ(card_count + 1, personal_data_manager->GetCreditCards().size());
400 } 405 }
401 406
402 void PaymentRequestBrowserTestBase::CreatePaymentRequestForTest( 407 void PaymentRequestBrowserTestBase::CreatePaymentRequestForTest(
403 content::WebContents* web_contents, 408 content::WebContents* web_contents,
404 const service_manager::BindSourceInfo& source_info, 409 const service_manager::BindSourceInfo& source_info,
405 payments::mojom::PaymentRequestRequest request) { 410 payments::mojom::PaymentRequestRequest request) {
406 DCHECK(web_contents); 411 DCHECK(web_contents);
407 std::unique_ptr<TestChromePaymentRequestDelegate> delegate = 412 std::unique_ptr<TestChromePaymentRequestDelegate> delegate =
408 base::MakeUnique<TestChromePaymentRequestDelegate>( 413 base::MakeUnique<TestChromePaymentRequestDelegate>(
409 web_contents, this /* observer */, this /* widget_observer */, 414 web_contents, this /* observer */, is_incognito_, is_valid_ssl_);
410 is_incognito_, is_valid_ssl_);
411 delegate_ = delegate.get(); 415 delegate_ = delegate.get();
412 PaymentRequestWebContentsManager::GetOrCreateForWebContents(web_contents) 416 PaymentRequestWebContentsManager::GetOrCreateForWebContents(web_contents)
413 ->CreatePaymentRequest(web_contents, std::move(delegate), 417 ->CreatePaymentRequest(web_contents, std::move(delegate),
414 std::move(request), this); 418 std::move(request), this);
415 } 419 }
416 420
417 void PaymentRequestBrowserTestBase::ClickOnDialogViewAndWait( 421 void PaymentRequestBrowserTestBase::ClickOnDialogViewAndWait(
418 DialogViewID view_id, 422 DialogViewID view_id,
419 bool wait_for_animation) { 423 bool wait_for_animation) {
420 views::View* view = 424 views::View* view =
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
654 std::list<DialogEvent> event_sequence) { 658 std::list<DialogEvent> event_sequence) {
655 event_observer_ = 659 event_observer_ =
656 base::MakeUnique<DialogEventObserver>(std::move(event_sequence)); 660 base::MakeUnique<DialogEventObserver>(std::move(event_sequence));
657 } 661 }
658 662
659 void PaymentRequestBrowserTestBase::WaitForObservedEvent() { 663 void PaymentRequestBrowserTestBase::WaitForObservedEvent() {
660 event_observer_->Wait(); 664 event_observer_->Wait();
661 } 665 }
662 666
663 } // namespace payments 667 } // namespace payments
668
669 std::ostream& operator<<(
670 std::ostream& out,
671 payments::PaymentRequestBrowserTestBase::DialogEvent event) {
672 using DialogEvent = payments::PaymentRequestBrowserTestBase::DialogEvent;
673 switch (event) {
674 case DialogEvent::DIALOG_OPENED:
675 out << "DIALOG_OPENED";
676 break;
677 case DialogEvent::DIALOG_CLOSED:
678 out << "DIALOG_CLOSED";
679 break;
680 case DialogEvent::ORDER_SUMMARY_OPENED:
681 out << "ORDER_SUMMARY_OPENED";
682 break;
683 case DialogEvent::PAYMENT_METHOD_OPENED:
684 out << "PAYMENT_METHOD_OPENED";
685 break;
686 case DialogEvent::SHIPPING_ADDRESS_SECTION_OPENED:
687 out << "SHIPPING_ADDRESS_SECTION_OPENED";
688 break;
689 case DialogEvent::SHIPPING_OPTION_SECTION_OPENED:
690 out << "SHIPPING_OPTION_SECTION_OPENED";
691 break;
692 case DialogEvent::CREDIT_CARD_EDITOR_OPENED:
693 out << "CREDIT_CARD_EDITOR_OPENED";
694 break;
695 case DialogEvent::SHIPPING_ADDRESS_EDITOR_OPENED:
696 out << "SHIPPING_ADDRESS_EDITOR_OPENED";
697 break;
698 case DialogEvent::CONTACT_INFO_EDITOR_OPENED:
699 out << "CONTACT_INFO_EDITOR_OPENED";
700 break;
701 case DialogEvent::BACK_NAVIGATION:
702 out << "BACK_NAVIGATION";
703 break;
704 case DialogEvent::BACK_TO_PAYMENT_SHEET_NAVIGATION:
705 out << "BACK_TO_PAYMENT_SHEET_NAVIGATION";
706 break;
707 case DialogEvent::CONTACT_INFO_OPENED:
708 out << "CONTACT_INFO_OPENED";
709 break;
710 case DialogEvent::EDITOR_VIEW_UPDATED:
711 out << "EDITOR_VIEW_UPDATED";
712 break;
713 case DialogEvent::CAN_MAKE_PAYMENT_CALLED:
714 out << "CAN_MAKE_PAYMENT_CALLED";
715 break;
716 case DialogEvent::ERROR_MESSAGE_SHOWN:
717 out << "ERROR_MESSAGE_SHOWN";
718 break;
719 case DialogEvent::SPEC_DONE_UPDATING:
720 out << "SPEC_DONE_UPDATING";
721 break;
722 case DialogEvent::CVC_PROMPT_SHOWN:
723 out << "CVC_PROMPT_SHOWN";
724 break;
725 case DialogEvent::NOT_SUPPORTED_ERROR:
726 out << "NOT_SUPPORTED_ERROR";
727 break;
728 }
729 return out;
730 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698