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

Issue 873123 link

Starred by 5 users

Issue metadata

Status: Verified
Owner:
Closed: Dec 13
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Feature



Sign in to add a comment

Always-on VPN on Arc++

Project Member Reported by phweiss@chromium.org, Aug 10

Issue description

Description:
"Always-on VPN" is an existing Android feature that allows users or their admins to decide that a VPN app should start a connection on boot, and direct all traffic through that connection. If the connection fails for whatever reason, all traffic is blocked until the VPN connection is reestablished.
With ARC++, Android VPN apps can be installed on chromebooks. This bug is meant to bring the "Always-on VPN" feature to chromebooks. 

A lot of work already happened under this buganizer bug, see there for design docs and CLs that have already landed.
https://b.corp.google.com/issues/72861260

Here is the launch bug:
https://bugs.chromium.org/p/chromium/issues/detail?id=819215
 
Project Member

Comment 1 by bugdroid1@chromium.org, Aug 10

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

commit 55ec60bc99365a9756212756b70588924ff76e81
Author: phweiss <phweiss@google.com>
Date: Fri Aug 10 14:26:48 2018

Propagate Always on VPN settings to shill

The new class AlwaysOnVpnManager listens to changes in the
Always-on VPN preferences, and forwards any changes to shill
to configure the network correctly.

BUG=b:72861260
BUG= 873123 
TEST=unit tests

Change-Id: I287f52c7326645085e98d9bd59fd94fd9a692f5e
Reviewed-on: https://chromium-review.googlesource.com/1052508
Commit-Queue: Philipp Weiß <phweiss@chromium.org>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Luis Hector Chavez <lhchavez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#582149}
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chrome/browser/chromeos/login/session/user_session_manager.cc
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chrome/browser/chromeos/login/session/user_session_manager.h
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/managed_network_configuration_handler.h
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/managed_network_configuration_handler_impl.cc
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/managed_network_configuration_handler_impl.h
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/mock_managed_network_configuration_handler.h
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/network_configuration_handler.cc
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/network_configuration_handler.h
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/chromeos/network/network_configuration_handler_unittest.cc
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/components/arc/BUILD.gn
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/components/arc/net/DEPS
[add] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/components/arc/net/always_on_vpn_manager.cc
[add] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/components/arc/net/always_on_vpn_manager.h
[add] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/components/arc/net/always_on_vpn_manager_unittest.cc
[modify] https://crrev.com/55ec60bc99365a9756212756b70588924ff76e81/components/sync_wifi/wifi_config_delegate_chromeos_unittest.cc

Cc: bartfab@chromium.org phweiss@chromium.org
 Issue 881107  has been merged into this issue.
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 1

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

commit 3ac2843b304aa04cb68552ae161eda80df5d335c
Author: phweiss <phweiss@google.com>
Date: Mon Oct 01 18:57:04 2018

Add new policy VpnConfigAllowed

This new policy maps to the CloudDpc policy
vpnConfigDisabled, which turns off the user's ability
to modify their VPN configuration by disabling the settings
UI. In the future, we also want to apply this policy to
Chrome settings.

BUG=b:72861260
BUG= 873123 
TEST=unit test

Change-Id: I7c4046f95790350f9a44c311972afc3a3ad68d84
Reviewed-on: https://chromium-review.googlesource.com/1251586
Reviewed-by: Sergey Poromov <poromov@chromium.org>
Reviewed-by: James Cook <jamescook@chromium.org>
Reviewed-by: Julian Pastarmov <pastarmovj@chromium.org>
Commit-Queue: Philipp Weiß <phweiss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595482}
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/browser/chromeos/arc/policy/arc_policy_bridge.cc
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/browser/chromeos/arc/policy/arc_policy_bridge_unittest.cc
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/browser/chromeos/preferences.cc
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/browser/policy/configuration_policy_handler_list_factory.cc
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/common/pref_names.cc
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/common/pref_names.h
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/chrome/test/data/policy/policy_test_cases.json
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/components/policy/resources/policy_templates.json
[modify] https://crrev.com/3ac2843b304aa04cb68552ae161eda80df5d335c/tools/metrics/histograms/enums.xml

Labels: Hotlist-ConOps-CrOS
Project Member

Comment 5 by bugdroid1@chromium.org, Oct 30

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

commit b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2
Author: phweiss <phweiss@google.com>
Date: Tue Oct 30 17:41:05 2018

Disable VPN Buttons if VpnConfigAllowed is false

If VpnConfigAllowed is false, it should not be possible to disconnect
VPN connections.

We need to modify the "Connect" and "Disconnect" button that appears on the
network settings page, but only for VPNs. For this, the |controlled-button|
element gets modified such that it can accept a null pref, which indicates
that it should not be controlled.

BUG=b:72861260
BUG= 873123 
TEST=browser_tests --gtest_filter=*CrControlledButtonTest*
TEST=browser_tests --gtest_filter=*CrSettingsInternetDetailPageTest*

Change-Id: I199e56b0eb21f926389192e9150912c2990d4a9b
Reviewed-on: https://chromium-review.googlesource.com/c/1278215
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Commit-Queue: Philipp Weiß <phweiss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603948}
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/extensions/api/settings_private/prefs_util.cc
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/resources/settings/controls/controlled_button.html
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/resources/settings/controls/controlled_button.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/resources/settings/controls/pref_control_behavior.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/resources/settings/internet_page/internet_detail_page.html
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/resources/settings/internet_page/internet_detail_page.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/browser/resources/settings/settings_shared_css.html
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/test/data/webui/chromeos/fake_networking_private.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/test/data/webui/settings/controlled_button_tests.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/chrome/test/data/webui/settings/internet_detail_page_tests.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/ui/webui/resources/cr_elements/policy/cr_policy_pref_behavior.js
[modify] https://crrev.com/b37a94e9bd981d50d6427b2ac3ae4798dc45a9c2/ui/webui/resources/cr_elements/policy/cr_policy_pref_indicator.js

Project Member

Comment 6 by bugdroid1@chromium.org, Nov 20

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

commit 29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84
Author: phweiss <phweiss@google.com>
Date: Tue Nov 20 09:30:01 2018

Add toggle in Chrome Settings for Always-on VPN

If a VPN connection is set to be Always-on (via Android setting
or policy), we want an off-switch in Chrome Settings in case
the Android container is compromised.

If the VpnConfigAllowed preference is set to false, this new switch will be
disabled, and potentially the policy indicator is displayed to its right.
This should line up with the same indicator next to the "(Dis)Connect"
button above, and the "open subpage" indicators in the lines below.

For this, the controlled-button needs to remove its right margin for the
(Dis)Connect buttons. Fortunately, these two buttons are the only
controlled-buttons in the codebase that do not have the end-justified attribute
set, as there is only one other instance of controlled-button
(in downloads_page.html, with end-justified set).

BUG=b:72861260
BUG= 873123 
TEST=browser_tests --gtest_filter=*CrSettingsInternetDetailPageTest*

Change-Id: Ifa76dc905fb0b06ddd13d1e1e2d2ab6d4c2cd018
Reviewed-on: https://chromium-review.googlesource.com/c/1340333
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Commit-Queue: Philipp Weiß <phweiss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609643}
[modify] https://crrev.com/29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84/chrome/app/settings_strings.grdp
[modify] https://crrev.com/29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84/chrome/browser/extensions/api/settings_private/prefs_util.cc
[modify] https://crrev.com/29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84/chrome/browser/resources/settings/controls/controlled_button.html
[modify] https://crrev.com/29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84/chrome/browser/resources/settings/internet_page/internet_detail_page.html
[modify] https://crrev.com/29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84/chrome/browser/resources/settings/internet_page/internet_detail_page.js
[modify] https://crrev.com/29605b3a89e940332cc3e0ef5ea0e6dd6b6d0c84/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc

Status: Fixed (was: Started)
Status: Verified (was: Fixed)
Able to push policy VpnConfigAllowed to device.
Checked via yaps on Google Chrome (72.0.3626.38,11316.50.0) daisy.

Sign in to add a comment