New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 606138 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android , All
Pri: 3
Type: Bug
Team-Security-UX

Blocked on:
issue 658125
issue 671052
issue 671053

Blocking:
issue 458606
issue 734889



Sign in to add a comment

Re-use PermissionBubbleManager on Chrome Android

Project Member Reported by mlamouri@chromium.org, Apr 23 2016

Issue description

Most of the logic of PermissionBubbleManager isn't really related to Bubbles. It's possible to re-use most of it and simply have a Views implementation based on Infobar on Android. I have a few CLs implementing that that I am about to clean-up and send for reviews.

Part of the work consists of renaming PermissionBubbleManager and bubble related things that shouldn't be bubble specific and move them to chrome/browser/permissions/.
 
Blocking: 458606
Labels: OS-All
Cc: f...@chromium.org dfalcant...@chromium.org miguelg@chromium.org
 Issue 563606  has been merged into this issue.
Cc: mlamouri@chromium.org
Owner: tsergeant@chromium.org
I'm going to take over this work for now, let me know if there are any issues.
Project Member

Comment 5 by bugdroid1@chromium.org, Jul 13 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a771c23ebb5c32480a32f41ad419a97ac3251b8e

commit a771c23ebb5c32480a32f41ad419a97ac3251b8e
Author: tsergeant <tsergeant@chromium.org>
Date: Wed Jul 13 04:54:52 2016

Rename PermissionBubbleManager to PermissionRequestManager

Additionally moves the PermissionRequestManager files from
chrome/browser/ui/ to chrome/browser/permissions.

This is a step towards being able to share generic permission request
handling code between Bubbles on desktop and infobars on Android.

This CL is a rebased and updated version of
https://codereview.chromium.org/1686903002/ by mlamouri@chromium.org

BUG= 606138 

Review-Url: https://codereview.chromium.org/2081103002
Cr-Commit-Position: refs/heads/master@{#405029}

[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/chrome_quota_permission_context.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/download/download_request_limiter.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/download/download_request_limiter_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/extensions/api/webrtc_from_web_accessible_resource_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/geolocation/geolocation_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/media_stream_device_permission_context_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/media_stream_infobar_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/midi_permission_context_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/permission_bubble_media_access_handler.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/webrtc_apprtc_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/webrtc_browsertest_base.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/notifications/notification_interactive_uitest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_context_base.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_context_base_unittest.cc
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager.cc
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager.h
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager_browsertest.cc
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/push_messaging/push_messaging_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/browser.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/browser_window_controller.mm
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/browser_window_controller_private.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/browser_window_controller_private.mm
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/tab_helpers.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/views/frame/browser_view.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_factory.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_factory.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_view.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_view.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/permission_bubble_view.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_browser.gypi
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_browser_ui.gypi
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_tests.gypi
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_tests_unit.gypi

Project Member

Comment 6 by bugdroid1@chromium.org, Jul 13 2016

Labels: merge-merged-2795
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a771c23ebb5c32480a32f41ad419a97ac3251b8e

commit a771c23ebb5c32480a32f41ad419a97ac3251b8e
Author: tsergeant <tsergeant@chromium.org>
Date: Wed Jul 13 04:54:52 2016

Rename PermissionBubbleManager to PermissionRequestManager

Additionally moves the PermissionRequestManager files from
chrome/browser/ui/ to chrome/browser/permissions.

This is a step towards being able to share generic permission request
handling code between Bubbles on desktop and infobars on Android.

This CL is a rebased and updated version of
https://codereview.chromium.org/1686903002/ by mlamouri@chromium.org

BUG= 606138 

Review-Url: https://codereview.chromium.org/2081103002
Cr-Commit-Position: refs/heads/master@{#405029}

[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/chrome_quota_permission_context.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/download/download_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/download/download_request_limiter.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/download/download_request_limiter_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/extensions/api/webrtc_from_web_accessible_resource_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/geolocation/geolocation_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/media_stream_device_permission_context_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/media_stream_infobar_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/midi_permission_context_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/permission_bubble_media_access_handler.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/webrtc_apprtc_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/media/webrtc_browsertest_base.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/notifications/notification_interactive_uitest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/notifications/platform_notification_service_interactive_uitest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_context_base.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_context_base_unittest.cc
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager.cc
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager.h
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager_browsertest.cc
[rename] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/permissions/permission_request_manager_unittest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/push_messaging/push_messaging_browsertest.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/browser.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/browser_window_controller.mm
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/browser_window_controller_private.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/browser_window_controller_private.mm
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/tab_helpers.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/views/frame/browser_view.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_factory.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_factory.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_view.cc
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/mock_permission_bubble_view.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/browser/ui/website_settings/permission_bubble_view.h
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_browser.gypi
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_browser_ui.gypi
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_tests.gypi
[modify] https://crrev.com/a771c23ebb5c32480a32f41ad419a97ac3251b8e/chrome/chrome_tests_unit.gypi

Project Member

Comment 7 by bugdroid1@chromium.org, Jul 19 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/58defcfb180432d2d1335f8b06766c2b4d746a3f

commit 58defcfb180432d2d1335f8b06766c2b4d746a3f
Author: tsergeant <tsergeant@chromium.org>
Date: Tue Jul 19 23:47:28 2016

Rename PermissionBubbleRequest to PermissionRequest

Additionally moves PermissionRequest from chrome/browser/ui/ to
chrome/browser/permissions and renames some helper/test classes. This is
a step towards being able to share generic permission request handling
code between Bubbles on desktop and InfoBars on Android.

This CL is a rebased and updated version of
https://codereview.chromium.org/1689513002/ by mlamouri@chromium.org

BUG= 606138 

Review-Url: https://codereview.chromium.org/2123653006
Cr-Commit-Position: refs/heads/master@{#406418}

[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/BUILD.gn
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/chrome_quota_permission_context.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/custom_handlers/register_protocol_handler_permission_request.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/custom_handlers/register_protocol_handler_permission_request.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/download/download_permission_request.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/download/download_permission_request.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/download/download_request_limiter.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/media/media_stream_devices_controller.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/media/media_stream_devices_controller.h
[add] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/mock_permission_request.cc
[add] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/mock_permission_request.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_context_base.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_context_base.h
[add] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request.cc
[rename] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request.h
[rename] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request_impl.cc
[rename] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request_impl.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_request_manager_unittest.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_uma_util.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/permissions/permission_uma_util.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/BUILD.gn
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/cocoa/website_settings/permission_bubble_cocoa.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/cocoa/website_settings/permission_bubble_cocoa.mm
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/views/website_settings/permissions_bubble_view.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/views/website_settings/permissions_bubble_view.h
[delete] https://crrev.com/288a99fe15afb1dfefbe253aaa3a5de3c249d866/chrome/browser/ui/website_settings/mock_permission_bubble_request.cc
[delete] https://crrev.com/288a99fe15afb1dfefbe253aaa3a5de3c249d866/chrome/browser/ui/website_settings/mock_permission_bubble_request.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/website_settings/mock_permission_bubble_view.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/website_settings/mock_permission_bubble_view.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/website_settings/permission_bubble_browser_test_util.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/website_settings/permission_bubble_browser_test_util.h
[delete] https://crrev.com/288a99fe15afb1dfefbe253aaa3a5de3c249d866/chrome/browser/ui/website_settings/permission_bubble_request.cc
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/browser/ui/website_settings/permission_bubble_view.h
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/chrome_browser.gypi
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/chrome_browser_ui.gypi
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/chrome/chrome_tests_unit.gypi
[modify] https://crrev.com/58defcfb180432d2d1335f8b06766c2b4d746a3f/tools/metrics/histograms/histograms.xml

Project Member

Comment 8 by bugdroid1@chromium.org, Aug 2 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bba1b05906679e2ada6b0833c34dc9f3d345a446

commit bba1b05906679e2ada6b0833c34dc9f3d345a446
Author: tsergeant <tsergeant@chromium.org>
Date: Tue Aug 02 23:34:04 2016

Permissions: Rename PermissionBubbleView to PermissionPrompt

Also makes the following related renames:
  PermissionBubbleViewViews   -> PermissionPromptImpl
  MockPermissionBubbleView    -> MockPermissionPrompt
  MockPermissionBubbleFactory -> MockPermissionPromptFactory
  permission_bubble_view_views.cc       -> permission_prompt_impl_views.cc
  permission_bubble_view_cocoa_views.mm -> permission_prompt_impl_views_mac.mm

The result is a more consistent naming scheme across Views, Views on
Mac, and Cocoa on Mac, and is a step towards using
PermissionRequestManager and PermissionPrompt on Android.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2182883002
Cr-Commit-Position: refs/heads/master@{#409380}

[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/download/download_request_limiter_unittest.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/permissions/permission_request_manager_browsertest.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/permissions/permission_request_manager_unittest.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/safe_browsing/permission_reporter_browsertest.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/cocoa/website_settings/permission_bubble_cocoa.h
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/cocoa/website_settings/permission_bubble_cocoa.mm
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.h
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.mm
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller_unittest.mm
[rename] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/cocoa/website_settings/permission_prompt_impl_views_mac.mm
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/views/frame/browser_view.cc
[rename] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/views/website_settings/permission_prompt_impl.cc
[rename] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/views/website_settings/permission_prompt_impl.h
[rename] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/views/website_settings/permission_prompt_impl_views.cc
[delete] https://crrev.com/8393bc9ea89196fc7a2e751e3b81211ab573cbe0/chrome/browser/ui/website_settings/mock_permission_bubble_factory.cc
[delete] https://crrev.com/8393bc9ea89196fc7a2e751e3b81211ab573cbe0/chrome/browser/ui/website_settings/mock_permission_bubble_view.cc
[delete] https://crrev.com/8393bc9ea89196fc7a2e751e3b81211ab573cbe0/chrome/browser/ui/website_settings/mock_permission_bubble_view.h
[add] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/mock_permission_prompt.cc
[add] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/mock_permission_prompt.h
[add] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/mock_permission_prompt_factory.cc
[rename] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/mock_permission_prompt_factory.h
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/permission_bubble_browser_test_util.cc
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/permission_bubble_browser_test_util.h
[rename] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/browser/ui/website_settings/permission_prompt.h
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/chrome_browser_ui.gypi
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/chrome_tests.gypi
[modify] https://crrev.com/bba1b05906679e2ada6b0833c34dc9f3d345a446/chrome/chrome_tests_unit.gypi

Project Member

Comment 9 by bugdroid1@chromium.org, Sep 20 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1dab5af6dbc7d560d68132861dc3c345aa51fde8

commit 1dab5af6dbc7d560d68132861dc3c345aa51fde8
Author: lshang <lshang@chromium.org>
Date: Tue Sep 20 01:42:14 2016

Use WebContents instead of Browser to construct PermissionPrompt

Currently we use PermissionRequestManager and PermissionPrompt to manage
permission requests on desktop, and PermissionPrompt is constructed using
Browser.

Since now we are going to reuse PermissionPrompt on Android, and Browser
is not for Android, so change to use WebContents for constructor instead.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2335623002
Cr-Commit-Position: refs/heads/master@{#419634}

[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/ui/cocoa/website_settings/permission_bubble_controller.h
[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/ui/cocoa/website_settings/permission_prompt_impl_views_mac.mm
[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/ui/views/website_settings/permission_prompt_impl_views.cc
[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/ui/website_settings/mock_permission_prompt_factory.cc
[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/ui/website_settings/mock_permission_prompt_factory.h
[modify] https://crrev.com/1dab5af6dbc7d560d68132861dc3c345aa51fde8/chrome/browser/ui/website_settings/permission_prompt.h

Project Member

Comment 10 by bugdroid1@chromium.org, Sep 25 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c

commit c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c
Author: lshang <lshang@chromium.org>
Date: Sun Sep 25 23:54:22 2016

Decouple MediaStreamInfoBarDelegate from GroupedPermissionInfoBarDelegate

Currently MediaStreamIndoBarDelegate is a subclass of
GroupedPermissionInfoBarDelegate(GPIBD), making it harder to implement
PermissionPromptAndroid and get GPIBD ready for other permission types.
So this CL decouples media infobar delegate from GPIBD, and let it inherit
PermissionInfoBarDelegate to keep the persistence toggle.

This is only a temporary state of permission infobar refactoring. After
PermissionPromptAndroid gets done and used for all other permission types,
we'll merge media stream infobar delegate into grouped infobar delegate.

BUG= 458606 ,  606138 

Review-Url: https://codereview.chromium.org/2341953004
Cr-Commit-Position: refs/heads/master@{#420864}

[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/media/webrtc/media_stream_devices_controller.cc
[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/media/webrtc/media_stream_devices_controller.h
[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/media/webrtc/media_stream_infobar_delegate_android.cc
[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/media/webrtc/media_stream_infobar_delegate_android.h
[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/permissions/permission_infobar_delegate.cc
[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/permissions/permission_infobar_delegate.h
[modify] https://crrev.com/c7a0d167bd0ce89c638fcf0a7bf4fb527fb05f9c/chrome/browser/ui/android/infobars/permission_infobar.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Sep 29 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3b4d59bb5648b72721014642f3a72685547dd589

commit 3b4d59bb5648b72721014642f3a72685547dd589
Author: lshang <lshang@chromium.org>
Date: Thu Sep 29 05:40:05 2016

Add InfoBarIdentifier to GroupedPermissionInfoBarDelegate

This will also allow GroupedPermissionInfoBarDelegate to be instantiated to manage
other permission types.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2319443002
Cr-Commit-Position: refs/heads/master@{#421758}

[modify] https://crrev.com/3b4d59bb5648b72721014642f3a72685547dd589/chrome/browser/BUILD.gn
[delete] https://crrev.com/c97f3dbb6bae43ee0c22e3848c7448de3e360a53/chrome/browser/permissions/grouped_permission_infobar_delegate.cc
[delete] https://crrev.com/c97f3dbb6bae43ee0c22e3848c7448de3e360a53/chrome/browser/permissions/grouped_permission_infobar_delegate.h
[add] https://crrev.com/3b4d59bb5648b72721014642f3a72685547dd589/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[add] https://crrev.com/3b4d59bb5648b72721014642f3a72685547dd589/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/3b4d59bb5648b72721014642f3a72685547dd589/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
[modify] https://crrev.com/3b4d59bb5648b72721014642f3a72685547dd589/components/infobars/core/infobar_delegate.h
[modify] https://crrev.com/3b4d59bb5648b72721014642f3a72685547dd589/tools/metrics/histograms/histograms.xml

Project Member

Comment 13 by bugdroid1@chromium.org, Oct 26 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c4089c7219c8b04750a1a72f1ce26e111dbdb909

commit c4089c7219c8b04750a1a72f1ce26e111dbdb909
Author: lshang <lshang@chromium.org>
Date: Wed Oct 26 06:54:30 2016

Add PermissionPromptAndroid skeleton

Currently desktop and Android use different ways to handle multiple permission
requests. Desktop uses PermissionRequestManager to schedule, group and show
requests, delegating the actual UI to a Views/Cocoa-based permission prompt.
Android, however, uses PermissionQueueController, an entirely different system
sharing no code with desktop, which queues up infobars for individual requests.
We'd like to reuse PermissionRequestManager on Android to improve feature parity
between the two platforms.

On Android, GroupedPermissionInfobarDelegate is ready to use to show multiple
permission requests and show individual toggles(allow/block) for each request.
We also need a subclass of PermissionPrompt which is responsible for showing
GroupedPermissionInfobars, coordinating permission infobars with InfoBarService,
and passing the results back to PermissionRequestManager.

This CL added the skeleton of this class, called PermissionPromptAndroid,
similar to PermissionPromptImpl on desktop. It allows multiple requests to show
and grouped in one infobar. Currently 'OK' and 'Cancel' button does nothing,
they will be plugged in SetPermissions() in the following CL.

Also to reuse PermissionRequestManager on Android, BUILD.gn files are changed to
get PermissionRequest and PermissionPrompt compiled on Android.

Since this refactoring work is not all ready yet, it's behind a runtime switch
flag for now so that we could implement and test it step by step. Finally we'll
enable it by default on Android.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2315563002
Cr-Commit-Position: refs/heads/master@{#427617}

[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/BUILD.gn
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/permissions/permission_context_base.cc
[add] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/permissions/permission_prompt_android.cc
[add] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/permissions/permission_request_impl.cc
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/ui/BUILD.gn
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/browser/ui/tab_helpers.cc
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/common/chrome_features.cc
[modify] https://crrev.com/c4089c7219c8b04750a1a72f1ce26e111dbdb909/chrome/common/chrome_features.h

Project Member

Comment 14 by bugdroid1@chromium.org, Oct 27 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a45bec9b24e74cf372126c155cf3b54c17be83b1

commit a45bec9b24e74cf372126c155cf3b54c17be83b1
Author: lshang <lshang@chromium.org>
Date: Thu Oct 27 08:18:55 2016

Check switch flag in CancelPermissionRequest

We use a switch flag to guard if we want to reuse PermissionRequestManager on
Android. This CL checks if the flag is enabled in CancelPermissionRequest.

After this we have guarded all places that use PermissionQueueController. When
grouped permission infobars are ready to use, we could enable the flag by default.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2448893002
Cr-Commit-Position: refs/heads/master@{#427958}

[modify] https://crrev.com/a45bec9b24e74cf372126c155cf3b54c17be83b1/chrome/browser/permissions/permission_context_base.cc

Project Member

Comment 15 by bugdroid1@chromium.org, Nov 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6dcb3141c8e832d80a4f83e8a4e235319908e57e

commit 6dcb3141c8e832d80a4f83e8a4e235319908e57e
Author: lshang <lshang@chromium.org>
Date: Tue Nov 01 23:35:01 2016

Make GroupedPermissionInfoBarDelegate's methods call through
PermissionPromptAndroid

On desktop, when 'Allow' or 'Block' button gets clicked, it will go through
PermissionPromptImpl, and PermissionPromptImpl defers it to
PermissionRequestManager(also a Delegate) to handle permission accept or
deny.

On Android, for GroupedPermissionInfoBars, 'Allow' and 'Block' button click
gets handled in ProcessButton(), which will calls into InfoBarDelegates, and
currently in ConfirmInfobarDelegate they just do nothing and return true.

This CL adds PermissionPromptAndroid* to GroupedPermissionInfobarDelegate
and adds Accept() and Cancel() methods to the delegate, which asks
PermissionPromptAndroid to handle accept or deny actions. then defers them to
PermissionRequestManager, which will store UMA metrics, store settings of each
requests, and remove requests in its request list.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2440403002
Cr-Commit-Position: refs/heads/master@{#429154}

[modify] https://crrev.com/6dcb3141c8e832d80a4f83e8a4e235319908e57e/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/6dcb3141c8e832d80a4f83e8a4e235319908e57e/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/6dcb3141c8e832d80a4f83e8a4e235319908e57e/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/6dcb3141c8e832d80a4f83e8a4e235319908e57e/chrome/browser/permissions/permission_prompt_android.h

Project Member

Comment 16 by bugdroid1@chromium.org, Nov 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e8eaccd054223465b7eb83989b161b9f5574387b

commit e8eaccd054223465b7eb83989b161b9f5574387b
Author: lshang <lshang@chromium.org>
Date: Thu Nov 03 00:47:46 2016

Change accept state of PermissionRequestManager from grouped infobar

In GroupedPermissionInfobars, there is one toggle for each permission type,
indicating if user wants to allow/block this type (e.g. geolocation and
notification requests are grouped in a single permission prompt, user wants
to allow location but block notification).

This CL adds ToggleAccept() to PermissionPromptAndroid, so that accept_states_[]
in PermissionRequestManager get updated when buttons on infobar get clicked, and
each permission type get allowed/blocked correctly.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2444253002
Cr-Commit-Position: refs/heads/master@{#429486}

[modify] https://crrev.com/e8eaccd054223465b7eb83989b161b9f5574387b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/e8eaccd054223465b7eb83989b161b9f5574387b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/e8eaccd054223465b7eb83989b161b9f5574387b/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/e8eaccd054223465b7eb83989b161b9f5574387b/chrome/browser/permissions/permission_prompt_android.h

Components: UI>Browser>Permissions>Prompts
Components: -Internals>Permissions
Project Member

Comment 19 by bugdroid1@chromium.org, Nov 30 2016

Project Member

Comment 20 by bugdroid1@chromium.org, Dec 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7b355c64e66c1799c83e40a85571856193a442db

commit 7b355c64e66c1799c83e40a85571856193a442db
Author: lshang <lshang@chromium.org>
Date: Thu Dec 01 21:42:21 2016

Create/Destroy PermissionPromptAndroid when switching tabs on Android

This is a follow-up CL of https://codereview.chromium.org/2315563002/.

On desktop, when switching tabs, BrowserView::OnActiveTabChanged() gets called
so that PermissionRequestManager will hide bubbles for the old tab, create
PermissionPrompt for the new tab, and displays any pending requests in the new
tab. This CL does the same thing for Android.

The final goal of this project is to reuse PermissionRequestManager to manage
permission request queue on Android, and get rid of PermissionQueueController.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2522373002
Cr-Commit-Position: refs/heads/master@{#435725}

[modify] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
[modify] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/browser/BUILD.gn
[modify] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/browser/android/chrome_jni_registrar.cc
[modify] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/browser/ui/BUILD.gn
[add] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/browser/ui/android/tab_model/tab_model_selector_base.cc
[add] https://crrev.com/7b355c64e66c1799c83e40a85571856193a442db/chrome/browser/ui/android/tab_model/tab_model_selector_base.h

Blockedon: 658125
Blockedon: 671052
Blockedon: 671053
Owner: ----
Status: Available (was: Started)
Owner: timloh@chromium.org
Status: Assigned (was: Available)
Project Member

Comment 27 by bugdroid1@chromium.org, Mar 28 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4187ef8e65b069e4d3e5645446ad04ebdb1c527e

commit 4187ef8e65b069e4d3e5645446ad04ebdb1c527e
Author: timloh <timloh@chromium.org>
Date: Tue Mar 28 03:45:36 2017

Move requests from GroupedPermissionInfoBarDelegate to PermissionPromptAndroid

This patch moves the Vector<PermissionRequest> stored in
GroupedPermissionInfoBarDelegate to PermissionPromptAndroid. This will
allow us to later share the PermissionPromptAndroid class in
PermissionDialogDelegate as storage for this same vector, as we already
will need such a pointer to delegate the the user action callbacks.

BUG= 606138 
TBR=dfalcantara

Review-Url: https://codereview.chromium.org/2757483002
Cr-Commit-Position: refs/heads/master@{#460005}

[modify] https://crrev.com/4187ef8e65b069e4d3e5645446ad04ebdb1c527e/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/4187ef8e65b069e4d3e5645446ad04ebdb1c527e/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/4187ef8e65b069e4d3e5645446ad04ebdb1c527e/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/4187ef8e65b069e4d3e5645446ad04ebdb1c527e/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/4187ef8e65b069e4d3e5645446ad04ebdb1c527e/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc

Project Member

Comment 28 by bugdroid1@chromium.org, Mar 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f9de5648278de3e68a7c7ef87215a8d3128eb763

commit f9de5648278de3e68a7c7ef87215a8d3128eb763
Author: timloh <timloh@chromium.org>
Date: Fri Mar 31 04:59:17 2017

Don't delete the PermissionPromptAndroid when switching tabs

The PermissionRequestManager creates and deletes its PermissionPrompt
when switching to and from a given tab. On desktop this is the mechanism
by which we hide/show permission prompts when switching tabs. On Android
however, we use infobars which already have their visibility managed, so
it's odd for the permissions code to be deleting and re-creating the
infobars instead of letting them work normally.

This patch makes us leave the PermissionPromptAndroid alone instead of
deleting and re-creating it on switching tabs. While this makes our
model on Android differ from desktop, this lets the permission infobars
be managed normally, and the PermissionPromptAndroid won't need to keep
a reference to the infobar.

This is mostly a revert of https://codereview.chromium.org/2522373002.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2781803002
Cr-Commit-Position: refs/heads/master@{#461042}

[modify] https://crrev.com/f9de5648278de3e68a7c7ef87215a8d3128eb763/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java
[modify] https://crrev.com/f9de5648278de3e68a7c7ef87215a8d3128eb763/chrome/browser/BUILD.gn
[modify] https://crrev.com/f9de5648278de3e68a7c7ef87215a8d3128eb763/chrome/browser/android/chrome_jni_registrar.cc
[modify] https://crrev.com/f9de5648278de3e68a7c7ef87215a8d3128eb763/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/f9de5648278de3e68a7c7ef87215a8d3128eb763/chrome/browser/ui/BUILD.gn
[delete] https://crrev.com/a3c57fc8fb4259c1696333ba4fa01a9fd623e955/chrome/browser/ui/android/tab_model/tab_model_selector_base.cc
[delete] https://crrev.com/a3c57fc8fb4259c1696333ba4fa01a9fd623e955/chrome/browser/ui/android/tab_model/tab_model_selector_base.h

Project Member

Comment 29 by bugdroid1@chromium.org, Apr 11 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/897fa146046239d6384aab548a93045f12bd5711

commit 897fa146046239d6384aab548a93045f12bd5711
Author: timloh <timloh@chromium.org>
Date: Tue Apr 11 06:24:45 2017

Remove pointer from PermissionPromptAndroid to InfoBar

This patch removes the pointer from PermissionPromptAndroid to InfoBar,
as preparation for supporting modal permission dialogs on android via
the PermissionRequestManager.

Currently, the pointer is only used for Hide() and IsVisible(). We can
use the PermissionRequest vector to see if a prompt is being shown, and
the calls to Hide() can no-op as they are already handled by the
InfoBarManager (e.g. page navigation, or after the user resolves the
prompt). If the PermissionServiceImpl receives a mojo connection error,
the PermissionRequestManager just dummies out its callback for active
prompts (on Android) as we return false in CanAcceptRequestUpdate().

We override EqualsDelegate() as the PermissionRequestManager will try to
Show() a queued bubble when it's called back after the user resolves a
prompt, but the callback happens before the active prompt is closed. The
parent's EqualsDelegate() would consider the new delegate the same as
the current one, and so it wouldn't show a new infobar.

This means we no longer have the following cycle of pointers:
  PermissionPromptAndroid ->
  GroupedPermissionInfoBar ->
  GroupedPermissionInfoBarDelegate ->
  PermissionPromptAndroid

When we later add modal permission dialogs, the PermissionPromptAndroid
will just need to check when it creates the actual UI what object to
make, but it won't need extra logic in Hide() or IsVisble().

BUG= 606138 

Review-Url: https://codereview.chromium.org/2755593002
Cr-Commit-Position: refs/heads/master@{#463551}

[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa.h
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa.mm
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/permission_bubble/mock_permission_prompt.cc
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/permission_bubble/mock_permission_prompt.h
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/permission_bubble/permission_prompt.h
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
[modify] https://crrev.com/897fa146046239d6384aab548a93045f12bd5711/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h

Project Member

Comment 30 by bugdroid1@chromium.org, May 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe

commit 86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe
Author: timloh <timloh@chromium.org>
Date: Tue May 09 03:43:09 2017

Make PermissionRequestManager::requests_ correspond to the active prompt

This patch reworks the usage of the PermissionRequest* vectors in the
PermissionRequestManager so that requests_ correponds the the active
prompt, if any. In particular, the vector remains empty while requests
arrive and is populated immediately before actually creating the prompt
UI. We also remove PermissionPrompt::IsVisible() which is no longer
needed as we can just check whether the vector is empty.

Currently AddRequest() calls immediately push to requests_ if it is
empty and otherwise queue the request. TriggerShowBubble() also already
has logic to use the queued requests if requests_ is empty. This patch
makes AddRequest() only queue requests and leaves moving them to the
requests_ vector to TriggerShowBubble().

This patch is preparation for making the vector of requests available
to the PermissionPrompt subclasses via the Delegate object, so that on
Android we won't need to store a copy of this vector, which can be
problematic when requests are cancelled.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2853803002
Cr-Commit-Position: refs/heads/master@{#470158}

[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/permissions/permission_context_base_unittest.cc
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa.h
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa.mm
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/permission_bubble/mock_permission_prompt.cc
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/permission_bubble/mock_permission_prompt.h
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/permission_bubble/permission_prompt.h
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
[modify] https://crrev.com/86d8eaf62f5dfd8c4d3d9d542d6c4a859ca595fe/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h

Project Member

Comment 31 by bugdroid1@chromium.org, May 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ca4d3f297d0b03d83711a9d17f808e299aa6ff19

commit ca4d3f297d0b03d83711a9d17f808e299aa6ff19
Author: timloh <timloh@chromium.org>
Date: Fri May 12 03:44:57 2017

Move requests from Show() argument to PermissionPrompt::Delegate

This patch moves the vector of permission requests, and the initial
vector of accept states, from arguments to PermissionPrompt::Show() to
values stored on the PermissionPrompt::Delegate. Since the vector is of
raw pointers, the PermissionPrompt could hold inadvertently hold on to
pointers from Show() after they have been freed. This is currently being
done on PermissionPromptAndroid, so this patch fixes this.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2868783002
Cr-Commit-Position: refs/heads/master@{#471211}

[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa.mm
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_cocoa_browser_test.mm
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_controller.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_controller.mm
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/cocoa/permission_bubble/permission_bubble_controller_unittest.mm
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/permission_bubble/mock_permission_prompt.cc
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/permission_bubble/mock_permission_prompt.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/permission_bubble/permission_bubble_browser_test_util.cc
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/permission_bubble/permission_bubble_browser_test_util.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/permission_bubble/permission_prompt.h
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.cc
[modify] https://crrev.com/ca4d3f297d0b03d83711a9d17f808e299aa6ff19/chrome/browser/ui/views/permission_bubble/permission_prompt_impl.h

Project Member

Comment 32 by bugdroid1@chromium.org, May 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/746d11013697cfc620b5a1dfcf76a745dfa5182d

commit 746d11013697cfc620b5a1dfcf76a745dfa5182d
Author: timloh <timloh@chromium.org>
Date: Mon May 22 02:24:04 2017

Test PermissionRequestManager on Android in GeolocationPermissionContext unit tests

This patch adds tests for the PermissionRequestManager on Android in the
GeolocationPermissionContext unit tests via testing::WithParamInterface.
The existing tests are refactored slightly to make this possible. In
particular, the #ifs which switched between checking the PRM and the
InfoBarService are replaced with checks on GetParam(), and as much as
possible this logic is pulled into AcceptPrompt() and so on.

BUG= 671052 ,  606138 

Review-Url: https://codereview.chromium.org/2876993003
Cr-Commit-Position: refs/heads/master@{#473491}

[modify] https://crrev.com/746d11013697cfc620b5a1dfcf76a745dfa5182d/chrome/browser/geolocation/geolocation_permission_context_unittest.cc

Project Member

Comment 33 by bugdroid1@chromium.org, May 30 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ee625a76bb992853cd9a73625f25deeecfeb0d83

commit ee625a76bb992853cd9a73625f25deeecfeb0d83
Author: timloh <timloh@chromium.org>
Date: Tue May 30 04:23:23 2017

Start wiring up modal dialog experiment in PermissionRequestManager codepath

This patch starts adding support for the modal dialog experiment when
the PermissionRequestManager is enabled on Android. To keep things
simple we re-use the existing PermissionDialogDelegate class and allow
it to now operate on a PermissionPromptAndroid.

There are several pieces that still need to be implemented in subsequent
patches. The string used in the dialog is currently the wrong string
(we use the fragment, e.g. "Know your location" instead of a full
sentence "permission.site wants to use your device's location.".
The link text (learn more) for EME needs to be hooked up, as well as
making the toggle experiment work, and supporting grouped camera +
microphone permissions.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2808003002
Cr-Commit-Position: refs/heads/master@{#475422}

[modify] https://crrev.com/ee625a76bb992853cd9a73625f25deeecfeb0d83/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/ee625a76bb992853cd9a73625f25deeecfeb0d83/chrome/browser/permissions/permission_dialog_delegate.h
[modify] https://crrev.com/ee625a76bb992853cd9a73625f25deeecfeb0d83/chrome/browser/permissions/permission_prompt_android.cc

Project Member

Comment 34 by bugdroid1@chromium.org, May 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c136c9e35c51c4956eb0c35b9b75dc4c4b80146a

commit c136c9e35c51c4956eb0c35b9b75dc4c4b80146a
Author: timloh <timloh@chromium.org>
Date: Wed May 31 04:08:15 2017

Wire up Android system permission prompts in PermissionRequestManager codepath

This patch fixes the PermissionRequestManager codepath to show Android
system permission prompts where appropriate, by implementing
PermissionRequestImpl::GetContentSettingsType() so we know what
permission to request.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2909223003
Cr-Commit-Position: refs/heads/master@{#475790}

[modify] https://crrev.com/c136c9e35c51c4956eb0c35b9b75dc4c4b80146a/chrome/browser/permissions/permission_request_impl.cc
[modify] https://crrev.com/c136c9e35c51c4956eb0c35b9b75dc4c4b80146a/chrome/browser/permissions/permission_request_impl.h

Project Member

Comment 35 by bugdroid1@chromium.org, Jun 1 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/aa3ce260e5248cc75e61ca7540652c74dee4bf55

commit aa3ce260e5248cc75e61ca7540652c74dee4bf55
Author: timloh <timloh@chromium.org>
Date: Thu Jun 01 05:29:40 2017

Fix message text for modal prompts when PermissionRequestManager enabled

This patch wires up the correct message text for modal permission
prompts in the PermissionRequestManager code-path.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2897223002
Cr-Commit-Position: refs/heads/master@{#476201}

[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/chrome_quota_permission_context.cc
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/media/webrtc/media_stream_devices_controller.cc
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/media/webrtc/media_stream_devices_controller.h
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_request.h
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_request_impl.cc
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_request_impl.h
[modify] https://crrev.com/aa3ce260e5248cc75e61ca7540652c74dee4bf55/chrome/browser/permissions/permission_request_manager.cc

Project Member

Comment 36 by bugdroid1@chromium.org, Jun 5 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8f43c3fa3816ec6b70168653eafd9b924412b426

commit 8f43c3fa3816ec6b70168653eafd9b924412b426
Author: timloh <timloh@chromium.org>
Date: Mon Jun 05 03:25:32 2017

Support persist toggle in PermissionRequestManager path on Android

BUG= 606138 

Review-Url: https://codereview.chromium.org/2909453002
Cr-Commit-Position: refs/heads/master@{#476934}

[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/media/webrtc/media_stream_devices_controller.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_infobar_delegate.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_request_impl.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_util.cc
[modify] https://crrev.com/8f43c3fa3816ec6b70168653eafd9b924412b426/chrome/browser/permissions/permission_util.h

Project Member

Comment 38 by bugdroid1@chromium.org, Jun 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530

commit 663a25accbad02b9f3cb8d7b60e5dc0f05a9f530
Author: timloh <timloh@chromium.org>
Date: Wed Jun 07 02:59:54 2017

Support "learn more" link for EME in PermissionRequestManager code-path on Android

This patch adds the "learn more" link for EME in the infobar and modal
prompts on Android when the PermissionRequestManager is enabled. Since
only EME requires this link, this is for now hard-coded into
PermissionPromptAndroid (if we want other permission requests to have
this, we would probably move it to PermissionRequest).

Note that currently the UI for this will be wrong for infobars, as the
infobar message is something like "https://permission.site wants to",
and we add "Learn more" after that. In a later patch I'll make the
infobars from the PRM match the existing ones (have everything in the
message).

BUG= 606138 

Review-Url: https://codereview.chromium.org/2919323002
Cr-Commit-Position: refs/heads/master@{#477532}

[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/android/java/src/org/chromium/chrome/browser/infobar/GroupedPermissionInfoBar.java
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/permissions/permission_request_impl.cc
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
[modify] https://crrev.com/663a25accbad02b9f3cb8d7b60e5dc0f05a9f530/chrome/browser/ui/permission_bubble/mock_permission_prompt.cc

Project Member

Comment 39 by bugdroid1@chromium.org, Jun 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/178801f31a4a630c65e0078b5dcb4af07b580fb7

commit 178801f31a4a630c65e0078b5dcb4af07b580fb7
Author: timloh <timloh@chromium.org>
Date: Tue Jun 13 04:17:58 2017

Support PermissionRequestManager for multiple download permissions on Android

This patch makes the DownloadRequestLimiter call into on Android the
PermissionRequestManager on Android. Note that this means that these
permission requests, which currently only use infobars on Android, will
be shown as modal dialogs when that feature and the PRM are enabled.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2915503003
Cr-Commit-Position: refs/heads/master@{#478898}

[modify] https://crrev.com/178801f31a4a630c65e0078b5dcb4af07b580fb7/chrome/browser/BUILD.gn
[modify] https://crrev.com/178801f31a4a630c65e0078b5dcb4af07b580fb7/chrome/browser/download/download_permission_request.cc
[modify] https://crrev.com/178801f31a4a630c65e0078b5dcb4af07b580fb7/chrome/browser/download/download_permission_request.h
[modify] https://crrev.com/178801f31a4a630c65e0078b5dcb4af07b580fb7/chrome/browser/download/download_request_limiter.cc

Project Member

Comment 40 by bugdroid1@chromium.org, Jun 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/47c391ce0d0d65703c290d7fbc6e3739ed14bc21

commit 47c391ce0d0d65703c290d7fbc6e3739ed14bc21
Author: timloh <timloh@chromium.org>
Date: Tue Jun 13 04:26:17 2017

Make UI with PermissionRequestManager enabled match PermissionQueueController

This patch updates the permission prompt infobars shown when the
PermissionRequestManager is enabled on Android match what they would be
when it's disabled (the current default). Since we no longer support
grouping permission requests, except for mic+camera, those requests are
special-cased to display the same message as they currently display
(this logic is in PermissionPromptAndroid as we'll still show a grouped
UI on desktop and there are two separate PermissionRequest objects).

BUG= 606138 

Review-Url: https://codereview.chromium.org/2923393002
Cr-Commit-Position: refs/heads/master@{#478899}

[delete] https://crrev.com/178801f31a4a630c65e0078b5dcb4af07b580fb7/chrome/android/java/src/org/chromium/chrome/browser/infobar/GroupedPermissionInfoBar.java
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/android/java_sources.gni
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/BUILD.gn
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/permissions/permission_request_impl.cc
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/ui/android/infobars/grouped_permission_infobar.cc
[modify] https://crrev.com/47c391ce0d0d65703c290d7fbc6e3739ed14bc21/chrome/browser/ui/android/infobars/grouped_permission_infobar.h

Project Member

Comment 41 by bugdroid1@chromium.org, Jun 15 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0a055d2dff1aeb841d126dc59ba529c55de79dd8

commit 0a055d2dff1aeb841d126dc59ba529c55de79dd8
Author: timloh <timloh@chromium.org>
Date: Thu Jun 15 03:17:11 2017

Allow modal mic+camera permission prompts in PRM codepath

This patch allows modal permission prompts for grouped mic+camera when
the PermissionRequestManager is enabled and used for media requests.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2930843002
Cr-Commit-Position: refs/heads/master@{#479591}

[modify] https://crrev.com/0a055d2dff1aeb841d126dc59ba529c55de79dd8/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/0a055d2dff1aeb841d126dc59ba529c55de79dd8/chrome/browser/permissions/permission_prompt_android.cc

Project Member

Comment 42 by bugdroid1@chromium.org, Jun 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f9cc972addbcd3f856a0bfc595d1bf62c0824f82

commit f9cc972addbcd3f856a0bfc595d1bf62c0824f82
Author: timloh <timloh@chromium.org>
Date: Mon Jun 19 04:33:07 2017

Hook up persist toggle UMA for PermissionRequestManager on Android

This patch wires up UMA for the persist toggle, for when the
PermissionRequestManager is enabled on Android, as the current
implementation is in the PermissionInfoBarDelegate. Both InfoBars and
Dialogs will record UMA as they both delegate to the PermissionPrompt.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2941013002
Cr-Commit-Position: refs/heads/master@{#480347}

[modify] https://crrev.com/f9cc972addbcd3f856a0bfc595d1bf62c0824f82/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/GeolocationTest.java
[modify] https://crrev.com/f9cc972addbcd3f856a0bfc595d1bf62c0824f82/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/f9cc972addbcd3f856a0bfc595d1bf62c0824f82/chrome/browser/permissions/permission_prompt_android.h

Blocking: 734889
Project Member

Comment 44 by bugdroid1@chromium.org, Jun 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/95f41c431169a0dc380402e6cccb5a48e3fb486a

commit 95f41c431169a0dc380402e6cccb5a48e3fb486a
Author: timloh <timloh@chromium.org>
Date: Wed Jun 21 06:42:15 2017

Remove PermissionQueueController queueing checks in PermissionNavigationTest

When we enable the PermissionRequestManager on Android, the queueing in
the PermissionQueueController will no longer be relevant, as different
permission types will be queued by the PRM. To make the flag flip easier
this patch removes the checks in PermissionNavigationTest for queueing,
which would otherwise need to be removed at the same time as the flip.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2947013003
Cr-Commit-Position: refs/heads/master@{#481127}

[modify] https://crrev.com/95f41c431169a0dc380402e6cccb5a48e3fb486a/chrome/android/java/src/org/chromium/chrome/browser/permissions/PermissionDialogController.java
[modify] https://crrev.com/95f41c431169a0dc380402e6cccb5a48e3fb486a/chrome/android/javatests/src/org/chromium/chrome/browser/permissions/PermissionNavigationTest.java

Project Member

Comment 45 by bugdroid1@chromium.org, Jun 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7ef4fb730f1d56441a16be8e47f0d4da582c0be2

commit 7ef4fb730f1d56441a16be8e47f0d4da582c0be2
Author: timloh <timloh@chromium.org>
Date: Wed Jun 21 08:52:03 2017

Prepare DownloadRequestLimiterTest for enabling PermissionRequestManager on Android

This patch updates the DownloadRequestLimiterTest so that we'll be able
to enable the PermissionRequestManager on Android without needing to
change this test at the same time.

Currently the tests use a testing delegate, which on Android calls into
the infobar system and on desktop calls into the PRM. Instead of making
the TestingDelegate implement an interface, we just remove the delegate
and inline the logic into the test fixture. This is as we plan to remove
the infobar paths once the PRM is shipped, after which we won't need the
complexity of a delegate.

This patch also updates DownloadRequestLimiter_RawWebContents so that
it runs on desktop as well as Android.

BUG= 606138 

Review-Url: https://codereview.chromium.org/2946953003
Cr-Commit-Position: refs/heads/master@{#481149}

[modify] https://crrev.com/7ef4fb730f1d56441a16be8e47f0d4da582c0be2/chrome/browser/download/download_request_limiter_unittest.cc

Project Member

Comment 46 by bugdroid1@chromium.org, Jun 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/02958eaa8c765b0bc65c020bb1dd1d1fd0792de0

commit 02958eaa8c765b0bc65c020bb1dd1d1fd0792de0
Author: timloh <timloh@chromium.org>
Date: Thu Jun 22 04:57:47 2017

Flip UseGroupedPermissionInfobars and UsePermissionManagerForMediaRequests

This patch enables by default the flags UseGroupedPermissionInfobars and
UsePermissionManagerForMediaRequests. This means that media permissions
(mic, camera) will go through the PermissionManager like every other
permission, and Android will use the PermissionRequestManager instead of
the PermissionQueueController.

There are some minor UI changes here, mostly ones which users will never
notice, although of note is grouped mic+camera permissions on desktop
will now use two separate list items rather than one.

BUG= 606138 , 596786 ,734889

Review-Url: https://codereview.chromium.org/2937183002
Cr-Commit-Position: refs/heads/master@{#481443}

[modify] https://crrev.com/02958eaa8c765b0bc65c020bb1dd1d1fd0792de0/chrome/common/chrome_features.cc

Project Member

Comment 47 by bugdroid1@chromium.org, Jul 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0a99285795ade2dd281995dee72fdb9e80d3fd6d

commit 0a99285795ade2dd281995dee72fdb9e80d3fd6d
Author: Timothy Loh <timloh@chromium.org>
Date: Mon Jul 17 06:37:22 2017

Scope PermissionPrompt lifetime to UI visibility

This patch make the lifetime of PermissionPrompt objects more sensible
and match what we occasionally think it actually is. Currently these
objects exist when a tab is active, or on Android all the time. This
patch changes it so that, as the name might suggest, it corresponds to
when a prompt is actually visible. We retain the distinction between
desktop/Android where desktop hides the UI (now deletes the object) on
tab switching, while Android retains the UI (keeps the object alive)
as the InfoBar system manages hiding the prompt.

Since we don't explicitly manage lifetimes of the actual UI surface on
Android (infobars in particular, as it's clearer for modals when the UI
is actually destroyed) from the PermissionPrompt, we change the pointer
to a WeakPtr for safety. When the PermissionPrompt is destroyed due to
navigation, if an infobar happens to still persist due to a bug it
won't be able to be resolve different permission requests.

Bug:  606138 , 737102
Change-Id: I26a8843b9b446e91282a9b0ce67c4b442bf440e9
Reviewed-on: https://chromium-review.googlesource.com/567940
Commit-Queue: Timothy Loh <timloh@chromium.org>
Reviewed-by: Raymes Khoury <raymes@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487029}
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/grouped_permission_infobar_delegate_android.h
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/permission_dialog_delegate.h
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/permission_prompt_android.cc
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/permission_prompt_android.h
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/0a99285795ade2dd281995dee72fdb9e80d3fd6d/chrome/browser/permissions/permission_request_manager_unittest.cc

Project Member

Comment 48 by bugdroid1@chromium.org, Aug 18 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/246355da53490895b0db83a115a322549dc2bd4e

commit 246355da53490895b0db83a115a322549dc2bd4e
Author: Timothy Loh <timloh@chromium.org>
Date: Fri Aug 18 05:10:30 2017

Remove PermissionQueueController testing from PermissionContextBase/GeolocationPermissionContext

The PermissionQueueController has been disabled for two months and will
be removed shortly. This patch removes the parameterization from the
tests for PermissionContextBase and GeolocationPermissionContext for
testing the PQC in preparation for its removal.

This is also preparation for enabling modal permissions, which would
otherwise make the PQC tests fail as those inspect the InfoBar system
directly instead of mocking out the UI.

Bug:  606138 
Change-Id: Ie36eb8184189256fc217300034ab57469f369916
Reviewed-on: https://chromium-review.googlesource.com/620297
Reviewed-by: Dominick Ng <dominickn@chromium.org>
Commit-Queue: Timothy Loh <timloh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#495468}
[modify] https://crrev.com/246355da53490895b0db83a115a322549dc2bd4e/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
[modify] https://crrev.com/246355da53490895b0db83a115a322549dc2bd4e/chrome/browser/permissions/permission_context_base_unittest.cc

Project Member

Comment 49 by bugdroid1@chromium.org, Sep 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8786fb3d9918669bc40cb9816e5bbd197430b4b8

commit 8786fb3d9918669bc40cb9816e5bbd197430b4b8
Author: Timothy Loh <timloh@chromium.org>
Date: Wed Sep 06 03:04:05 2017

Remove old PermissionQueueController and media request code

We recently undertook a refactoring of how permissions are requested on
Android and how media (mic/camera) permissions are requested on all
platforms. These are enabled in M61, so at this point there's no point
in keeping the old code around.

Bug:  596786 ,  606138 
Change-Id: I8cf64fbb62f2da6cf506fee7103f8367384fd92e
Reviewed-on: https://chromium-review.googlesource.com/648828
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Raymes Khoury <raymes@chromium.org>
Commit-Queue: Timothy Loh <timloh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#499863}
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/BUILD.gn
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/chrome_quota_permission_context.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/download/download_request_infobar_delegate_android.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/download/download_request_infobar_delegate_android.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/download/download_request_infobar_delegate_unittest.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/download/download_request_limiter.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/download/download_request_limiter_unittest.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/geolocation/geolocation_infobar_delegate_android.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/geolocation/geolocation_infobar_delegate_android.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/media/midi_permission_infobar_delegate_android.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/media/midi_permission_infobar_delegate_android.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/media/protected_media_identifier_infobar_delegate_android.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/media/protected_media_identifier_infobar_delegate_android.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/media/webrtc/media_stream_device_permission_context.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/media/webrtc/media_stream_devices_controller.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/media/webrtc/media_stream_devices_controller.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/media/webrtc/media_stream_devices_controller_browsertest.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/media/webrtc/media_stream_infobar_delegate_android.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/media/webrtc/media_stream_infobar_delegate_android.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/notifications/notification_permission_infobar_delegate.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/notifications/notification_permission_infobar_delegate.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_context_base.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_context_base.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_context_base_unittest.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_dialog_delegate.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_dialog_delegate.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/permissions/permission_infobar_delegate.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/permissions/permission_infobar_delegate.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/permissions/permission_queue_controller.cc
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/permissions/permission_queue_controller.h
[delete] https://crrev.com/c5d6a1ef85a97b8aaa2d5d52b0676fda9e683a13/chrome/browser/permissions/permission_queue_controller_unittest.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/permissions/permission_request_manager_browsertest.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/policy/policy_browsertest.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/ui/android/infobars/permission_infobar.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/browser/ui/android/infobars/permission_infobar.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/common/chrome_features.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/common/chrome_features.h
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/chrome/test/BUILD.gn
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/components/infobars/core/infobar_delegate.cc
[modify] https://crrev.com/8786fb3d9918669bc40cb9816e5bbd197430b4b8/components/infobars/core/infobar_delegate.h

Project Member

Comment 50 by bugdroid1@chromium.org, Sep 12 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6530629aa083b54a55670125ef60f8514efbd295

commit 6530629aa083b54a55670125ef60f8514efbd295
Author: Timothy Loh <timloh@chromium.org>
Date: Tue Sep 12 05:08:55 2017

Don't show modal permission prompts for background tabs on Android

This patch fixes modal permission prompts to not appear for background
tabs on Android. Instead of having the BrowserView call into the
PermissionRequestManager on tab activation and so on, we just observe
the WasShown() and WasHidden() events.

Prompts may still show on Android when in the tab switcher, I hope to
address this in another patch.

Bug:  751025 ,  606138 
Change-Id: Ie52ca6e5985334b807dd6aa91c9f1aca94846429
Reviewed-on: https://chromium-review.googlesource.com/597507
Reviewed-by: Ben Wells <benwells@chromium.org>
Reviewed-by: Trent Apted <tapted@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Timothy Loh <timloh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#501187}
[modify] https://crrev.com/6530629aa083b54a55670125ef60f8514efbd295/chrome/browser/permissions/permission_request_manager.cc
[modify] https://crrev.com/6530629aa083b54a55670125ef60f8514efbd295/chrome/browser/permissions/permission_request_manager.h
[modify] https://crrev.com/6530629aa083b54a55670125ef60f8514efbd295/chrome/browser/permissions/permission_request_manager_unittest.cc
[modify] https://crrev.com/6530629aa083b54a55670125ef60f8514efbd295/chrome/browser/ui/cocoa/browser_window_controller.mm
[modify] https://crrev.com/6530629aa083b54a55670125ef60f8514efbd295/chrome/browser/ui/views/frame/browser_view.cc

Status: Fixed (was: Assigned)
Done!

Sign in to add a comment