Design doc here: https://docs.google.com/document/d/1fS6_WqYSSKBkyQHR3H7gJ7imD1GohiJqBHTAa9cUgO0/edit Relevant crbug number: 602666 (Implement PaymentRequest on iOS)
The assigned owner "rayraymond@google.com" is not able to receive e-mails, please re-triage. For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb commit e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb Author: Randall Raymond <rayraymond@google.com> Date: Fri Jul 28 21:52:46 2017 [Payment Request] Add parsing functionality for sending parameters to payment app In Payment Request for iOS we are integrating third party payment apps. When we invoke said payment apps we must send over numerous parameters. This CL adds ToDictionaryValue() for some of the objects that need to be converted into JSON objects and sent to these payment apps. Bug: 748556 Change-Id: I323d1966323f2ef3f0fdf9ea7616c162d4c4970c Reviewed-on: https://chromium-review.googlesource.com/590096 Reviewed-by: mahmadi <mahmadi@chromium.org> Commit-Queue: Randall Raymond <rayraymond@google.com> Cr-Commit-Position: refs/heads/master@{#490521} [modify] https://crrev.com/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb/ios/web/payments/payment_request.cc [modify] https://crrev.com/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb/ios/web/payments/payment_request_unittest.cc [modify] https://crrev.com/e9123f929f6f2c4d04fdc9c17ff934a44e1df5cb/ios/web/public/payments/payment_request.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/581d1dd33208f786dc37fe13bae2afb08d7dd7ca commit 581d1dd33208f786dc37fe13bae2afb08d7dd7ca Author: Randall Raymond <rayraymond@google.com> Date: Tue Aug 01 14:07:57 2017 [Payment Request] Creates IOSPaymentInstrumentFinder class to get Payment App details This new class is used to find and validate the payment apps that can handle a a set of url payment method identifiers. In the short term, iOS will be working under the assumption that there is only one payment app that can handle a specified payment method. This however will change in the long run to match Android/Desktop implementations such that any number of payment apps can handle a payment method identifier as specified by payment method manifest. Most of the unittests and parsing are based off of the parsing code originally written here: https://cs.chromium.org/chromium/src/components/payments/content/utility/payment_manifest_parser.cc?rcl=6a53ba2305e2d0196d8f46f8590e0ad1fa45d636 This is another component of this CL that for the short term works fine but in the long term will need to be refactored to avoid code duplication. Bug: 748556 Change-Id: Ib0ce3be91830555cb9a3e1fc919d98b6ad9898f4 Reviewed-on: https://chromium-review.googlesource.com/582494 Reviewed-by: Marijn Kruisselbrink <mek@chromium.org> Reviewed-by: Ryan Sturm <ryansturm@chromium.org> Reviewed-by: Scott Little <sclittle@chromium.org> Reviewed-by: mahmadi <mahmadi@chromium.org> Reviewed-by: Rouslan Solomakhin <rouslan@chromium.org> Reviewed-by: Mathieu Perreault <mathp@chromium.org> Commit-Queue: Randall Raymond <rayraymond@google.com> Cr-Commit-Position: refs/heads/master@{#490983} [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/BUILD.gn [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/DEPS [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/android/java/src/org/chromium/components/payments/PaymentManifestDownloader.java [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/content/android/payment_manifest_downloader_android.h [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/BUILD.gn [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/DEPS [rename] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/payment_manifest_downloader.cc [rename] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/payment_manifest_downloader.h [rename] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/components/payments/core/payment_manifest_downloader_unittest.cc [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/BUILD.gn [modify] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument.mm [add] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument_finder.h [add] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument_finder.mm [add] https://crrev.com/581d1dd33208f786dc37fe13bae2afb08d7dd7ca/ios/chrome/browser/payments/ios_payment_instrument_finder_unittest.mm
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad commit 6a85ba0ab73e0d91e2f791defba339dcf7cc59ad Author: Randall Raymond <rayraymond@google.com> Date: Fri Aug 04 23:11:54 2017 [Payment Request] Setup before adding UI for Payment Request Native Apps This CL adds some necessary cleanup and setup before adding the UI for integrating native apps in Payment Request. 1) Adds AlicePay as a testable payment method 2) Ensures that the payment app icon is of the right dimensions 3) Correctly gets the payment app icon if the source path is relative to the web app manifest URL 4) Gives the IOSPaymentInstrumentFinder class the ability to search for multiple payment apps per payment method 5) Changes all instances of "std::string" for url payment method identifiers to GURLs. TBR=mahmadi@chromium.org Bug: 748556 Change-Id: I02c9ed4f670fb9cbf1638a63c950aab0d4b0761e Reviewed-on: https://chromium-review.googlesource.com/592851 Commit-Queue: Randall Raymond <rayraymond@google.com> Reviewed-by: Mathieu Perreault <mathp@chromium.org> Cr-Commit-Position: refs/heads/master@{#492165} [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/chrome/browser/ui/views/payments/payment_request_browsertest.cc [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/chrome/test/BUILD.gn [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/content/BUILD.gn [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/content/payment_request_spec.cc [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/content/payment_request_spec.h [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/core/payment_request_data_util.cc [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/components/payments/core/payment_request_data_util.h [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/BUILD.gn [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument.mm [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument_finder.h [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument_finder.mm [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/ios_payment_instrument_finder_unittest.mm [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/payment_request.h [modify] https://crrev.com/6a85ba0ab73e0d91e2f791defba339dcf7cc59ad/ios/chrome/browser/payments/payment_request_unittest.mm
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/59766ac083f4270500c1d5df7abaf225356f7708 commit 59766ac083f4270500c1d5df7abaf225356f7708 Author: Randall Raymond <rayraymond@google.com> Date: Wed Aug 09 16:28:58 2017 [Payment Request] UI for iOS Payment Request Native Apps This CL puts together all the UI requirements for displaying native apps for users on Payment Request: 1) Shows a spinner in Payment Request UI until all payment methods are loaded 2) Populates the payment method page with both autofill payment instruments and iOS payment instruments 3) Displays the appropriate icon if the instrument is an iOS payment instrument. 4) Adds a flag such that native payment app UI is only visible when this flag is enabled. Bug: 748556 Change-Id: Ie94db646af5c115bbc3f5a67edfcfaf1be056f60 Reviewed-on: https://chromium-review.googlesource.com/602500 Commit-Queue: Randall Raymond <rayraymond@google.com> Reviewed-by: Eugene But <eugenebut@chromium.org> Reviewed-by: Mathieu Perreault <mathp@chromium.org> Reviewed-by: mahmadi <mahmadi@chromium.org> Cr-Commit-Position: refs/heads/master@{#493013} [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/components/payments/core/features.cc [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/components/payments/core/features.h [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/about_flags.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ios_chrome_flag_descriptions.cc [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ios_chrome_flag_descriptions.h [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/ios_payment_instrument.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/payment_request.h [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/payment_request.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/payment_request_unittest.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/test_payment_request.h [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/payments/test_payment_request.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/BUILD.gn [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_method_selection_mediator.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_coordinator.h [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_coordinator.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_manager.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_mediator.mm [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_view_controller.h [modify] https://crrev.com/59766ac083f4270500c1d5df7abaf225356f7708/ios/chrome/browser/ui/payments/payment_request_view_controller.mm
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/80a001ccc8803cb3bc4615c740563621b000a1bd commit 80a001ccc8803cb3bc4615c740563621b000a1bd Author: Randall Raymond <rayraymond@google.com> Date: Wed Aug 09 20:31:00 2017 [Payment Request] Does not reset url method identifiers if native apps flag is off This small change makes it so that the url payment method identifiers vector in PaymentRequest is not reset if WebPaymentNativeApps flag is set to false. This is important so that tests that do not need the WebPaymentsNativeApps flag do not incorrectly break. Bug: 748556 Change-Id: I68c1cc1bef446e8766f25fd7413d135cb8180993 Reviewed-on: https://chromium-review.googlesource.com/609219 Reviewed-by: mahmadi <mahmadi@chromium.org> Commit-Queue: Randall Raymond <rayraymond@google.com> Cr-Commit-Position: refs/heads/master@{#493126} [modify] https://crrev.com/80a001ccc8803cb3bc4615c740563621b000a1bd/ios/chrome/browser/payments/payment_request.mm [modify] https://crrev.com/80a001ccc8803cb3bc4615c740563621b000a1bd/ios/chrome/browser/ui/payments/payment_request_manager.mm
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/784b24f244613c5964bdffcac8c49dbc75c63472 commit 784b24f244613c5964bdffcac8c49dbc75c63472 Author: Randall Raymond <rayraymond@google.com> Date: Thu Aug 10 22:52:31 2017 [Payment Request] Revert Itunes JSON Request class This class is no longer needed anymore. IOS Payment App details are now being parsed from the Web App Manifest rather than the response returned from using the iTunes Search API. Bug: 748556 Change-Id: Ib5ebc89cc22d259fcc6a20831c417b27eb12279d Reviewed-on: https://chromium-review.googlesource.com/609320 Reviewed-by: mahmadi (Moe) <mahmadi@chromium.org> Commit-Queue: Randall Raymond <rayraymond@google.com> Cr-Commit-Position: refs/heads/master@{#493579} [modify] https://crrev.com/784b24f244613c5964bdffcac8c49dbc75c63472/ios/chrome/browser/payments/BUILD.gn [delete] https://crrev.com/bd3df550c43a23c45e2b7381a564447655739dd7/ios/chrome/browser/payments/itunes_json_request.cc [delete] https://crrev.com/bd3df550c43a23c45e2b7381a564447655739dd7/ios/chrome/browser/payments/itunes_json_request.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d057ba0b9d1c83848eea1527231c41bfeb008893 commit d057ba0b9d1c83848eea1527231c41bfeb008893 Author: Randall Raymond <rayraymond@google.com> Date: Fri Aug 11 16:11:41 2017 [Payment Request] Makes the link between Payment Request and Third Party Native Apps This CL creates an IOSPaymentInstrumentLauncher object that launches a third party iOS payment app and receives the response back from this payment app. Communication is done via Universal Link where data is passed using the link's query parameters. Bug: 748556 Change-Id: Ie4ca21d1f67846174d0f2222ab29390298fff0da Reviewed-on: https://chromium-review.googlesource.com/598313 Reviewed-by: Mathieu Perreault <mathp@chromium.org> Reviewed-by: mahmadi (Moe) <mahmadi@chromium.org> Reviewed-by: Mark Cogan <marq@chromium.org> Commit-Queue: Randall Raymond <rayraymond@google.com> Cr-Commit-Position: refs/heads/master@{#493766} [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/chrome/test/BUILD.gn [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/BUILD.gn [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/DEPS [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/BUILD.gn [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/mock_tab_opener.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/tab_opening.h [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/application_delegate/user_activity_handler.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/app/main_controller.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/BUILD.gn [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/app_startup_parameters.h [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/app_startup_parameters.mm [add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/app_startup_parameters_unittest.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/BUILD.gn [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument.h [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_finder.mm [add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher.h [add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher.mm [add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher_factory.h [add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher_factory.mm [add] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/ios_payment_instrument_launcher_unittest.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_request.h [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_response_helper.h [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_response_helper.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/payments/payment_response_helper_unittest.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/chrome/browser/ui/payments/payment_request_manager.mm [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/web/payments/payment_request.cc [modify] https://crrev.com/d057ba0b9d1c83848eea1527231c41bfeb008893/ios/web/public/payments/payment_request.h
Comment 1 by sheriffbot@chromium.org
, Jul 26 2017