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

Issue 2610953003: Convert utility process WiFi Credentials IPC to mojo (Closed)

Created:
3 years, 11 months ago by Noel Gordon
Modified:
3 years, 11 months ago
CC:
Aaron Boodman, abarth-chromium, chromium-apps-reviews_chromium.org, chromium-reviews, darin (slow to review), extensions-reviews_chromium.org, qsr+mojo_chromium.org, stevenjb+watch_chromium.org, viettrungluu+watch_chromium.org, yzshen+watch_chromium.org
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Convert utility process WiFi Credentials IPC to mojo Add an OS_WIN mojo API to the utility process to allow callers to get the WiFi credentials for a given network, an API that requires UAC elevation, and used by the chrome extensions private networking API. Add elevation support to the mojo utility process helper class and update tests for that class. Use the helper class to control the utility process (elevate, start, make request, terminate with the response). Add a browser test: post a get credentials request from the blocking pool to simulate how the existing call flow works. Internally post the work to a different thread (IO) before making mojo calls (this to work-around the fact that mojo does not currently support blocking pool callers). Note the browser test does not cover the lower-level WiFi interface since the bots have no access to any WiFi network (good). There's a manual tool to test that aspect with [1] and, in my testing on Win10, that tool works very well. [1] components/wifi/wifi_test.cc BUG=680928 Review-Url: https://codereview.chromium.org/2610953003 Cr-Commit-Position: refs/heads/master@{#444342} Committed: https://chromium.googlesource.com/chromium/src/+/cd3f19adeb8b19062badb591ff33b770dd0eb21f

Patch Set 1 : Initial pass written diretctly in plain Mojo. #

Patch Set 2 : Add elevation API to UtilityProcessMojoClient #

Patch Set 3 : Remove UtilityProcessHostClient, use UtilityProcessMojoClient #

Patch Set 4 : Make destructor private to satisfy win-clang, add friend class. #

Patch Set 5 : Clean up and vet comments. #

Patch Set 6 : Ditch AddRef etc: make the getter class self-deleting. #

Patch Set 7 : Add code from dependent patch. #

Patch Set 8 : Minor tweaks, minor comment changes. #

Patch Set 9 : Add 2017 .mojom copyright. #

Patch Set 10 : Add UtilityProcessMojoClientBrowserTest::ElevatedSuccess test. #

Patch Set 11 : Add NetworkingPrivateCredentialsGetter browser test. #

Patch Set 12 : Delete the credentials getter_ early in the browser test. #

Total comments: 20

Patch Set 13 : Review comments round #1. #

Total comments: 5

Patch Set 14 : Review comments round #2. #

Total comments: 8

Patch Set 15 : Review comments round #3. #

Patch Set 16 : Add mojom test network name. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+319 lines, -144 lines) Patch
M chrome/browser/chrome_content_utility_manifest_overlay.json View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +1 line, -0 lines 0 comments Download
A chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +79 lines, -0 lines 0 comments Download
M chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +107 lines, -99 lines 0 comments Download
M chrome/common/extensions/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/common/extensions/chrome_utility_extensions_messages.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +0 lines, -13 lines 0 comments Download
A chrome/common/extensions/wifi_credentials_getter.mojom View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +17 lines, -0 lines 0 comments Download
M chrome/test/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +3 lines, -0 lines 0 comments Download
M chrome/utility/chrome_content_utility_client.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +2 lines, -2 lines 0 comments Download
M chrome/utility/chrome_content_utility_ipc_whitelist.cc View 1 chunk +0 lines, -3 lines 0 comments Download
M chrome/utility/extensions/extensions_handler.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +0 lines, -4 lines 0 comments Download
M chrome/utility/extensions/extensions_handler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 5 chunks +48 lines, -21 lines 0 comments Download
M content/browser/utility_process_mojo_client_browsertest.cc View 1 2 3 4 5 6 7 8 9 10 3 chunks +32 lines, -2 lines 0 comments Download
M content/public/browser/utility_process_mojo_client.h View 1 2 3 4 5 6 3 chunks +26 lines, -0 lines 0 comments Download

Messages

Total messages: 104 (83 generated)
Noel Gordon
Uploaded https://codereview.chromium.org/2606383006 for test assessment.
3 years, 11 months ago (2017-01-05 13:47:51 UTC) #11
Noel Gordon
This private networking IPC is OS_WIN only and also requires utility process elevation. There is ...
3 years, 11 months ago (2017-01-16 00:56:32 UTC) #57
tibell
https://codereview.chromium.org/2610953003/diff/260001/chrome/common/extensions/wifi_credentials.mojom File chrome/common/extensions/wifi_credentials.mojom (right): https://codereview.chromium.org/2610953003/diff/260001/chrome/common/extensions/wifi_credentials.mojom#newcode14 chrome/common/extensions/wifi_credentials.mojom:14: GetWiFiCredentials(string ssid) => (bool success, string key_data); Could we ...
3 years, 11 months ago (2017-01-16 03:34:01 UTC) #60
Sam McNally
https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc (right): https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc#newcode22 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc:22: network_guid_.clear(); Why? https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc#newcode24 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc:24: network_guid_ = "chrome://test-wifi-get-key-from-system"; This should ...
3 years, 11 months ago (2017-01-16 04:16:20 UTC) #61
Noel Gordon
https://codereview.chromium.org/2610953003/diff/260001/chrome/common/extensions/wifi_credentials.mojom File chrome/common/extensions/wifi_credentials.mojom (right): https://codereview.chromium.org/2610953003/diff/260001/chrome/common/extensions/wifi_credentials.mojom#newcode14 chrome/common/extensions/wifi_credentials.mojom:14: GetWiFiCredentials(string ssid) => (bool success, string key_data); On 2017/01/16 ...
3 years, 11 months ago (2017-01-16 09:30:05 UTC) #62
Noel Gordon
New patch uploaded ... https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc (right): https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc#newcode22 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc:22: network_guid_.clear(); On 2017/01/16 04:16:20, Sam ...
3 years, 11 months ago (2017-01-16 11:09:59 UTC) #65
Noel Gordon
+ dcheng for IPC security.
3 years, 11 months ago (2017-01-16 12:50:17 UTC) #69
tibell
lgtm
3 years, 11 months ago (2017-01-16 22:51:04 UTC) #70
stevenjb
https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc (right): https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc#newcode105 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc:105: if (success) { Invert and early exit https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc#newcode146 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc:146: ...
3 years, 11 months ago (2017-01-17 17:06:54 UTC) #71
Noel Gordon
https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc (right): https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc#newcode105 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc:105: if (success) { On 2017/01/17 17:06:54, stevenjb wrote: > ...
3 years, 11 months ago (2017-01-17 21:54:26 UTC) #74
stevenjb
owner lgtm https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc (right): https://codereview.chromium.org/2610953003/diff/280001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc#newcode146 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_win.cc:146: network_guid, public_key, callback)); On 2017/01/17 21:54:26, noel ...
3 years, 11 months ago (2017-01-17 22:01:27 UTC) #75
Noel Gordon
On 2017/01/17 22:01:27, stevenjb wrote: > Ugh, I see, CryptoVerifyImpl is callong > NetworkingPrivateCredentialsGetter::Start() from ...
3 years, 11 months ago (2017-01-17 22:13:46 UTC) #76
dcheng
https://codereview.chromium.org/2610953003/diff/300001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc (right): https://codereview.chromium.org/2610953003/diff/300001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc#newcode14 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc:14: #error This test is OS_WIN only. Do we get ...
3 years, 11 months ago (2017-01-18 00:39:22 UTC) #79
Noel Gordon
https://codereview.chromium.org/2610953003/diff/300001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc (right): https://codereview.chromium.org/2610953003/diff/300001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc#newcode14 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc:14: #error This test is OS_WIN only. On 2017/01/18 00:39:22, ...
3 years, 11 months ago (2017-01-18 01:47:14 UTC) #82
dcheng
mojo lgtm
3 years, 11 months ago (2017-01-18 01:50:41 UTC) #83
Noel Gordon
https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc File chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc (right): https://codereview.chromium.org/2610953003/diff/260001/chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc#newcode24 chrome/browser/extensions/api/networking_private/networking_private_credentials_getter_browsertest.cc:24: network_guid_ = "chrome://test-wifi-get-key-from-system"; On 2017/01/16 11:09:58, noel gordon wrote: ...
3 years, 11 months ago (2017-01-18 06:02:03 UTC) #88
Sam McNally
lgtm
3 years, 11 months ago (2017-01-18 07:10:47 UTC) #91
Noel Gordon
Thanks for review folks, t'was fun, let's try landing. +jochen for OWNERS.
3 years, 11 months ago (2017-01-18 11:05:37 UTC) #92
jochen (gone - plz use gerrit)
lgtm
3 years, 11 months ago (2017-01-18 12:32:36 UTC) #96
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2610953003/340001
3 years, 11 months ago (2017-01-18 13:07:57 UTC) #101
commit-bot: I haz the power
3 years, 11 months ago (2017-01-18 13:13:15 UTC) #104
Message was sent while issue was closed.
Committed patchset #16 (id:340001) as
https://chromium.googlesource.com/chromium/src/+/cd3f19adeb8b19062badb591ff33...

Powered by Google App Engine
This is Rietveld 408576698