diff options
author | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-10 18:24:26 +0000 |
---|---|---|
committer | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-10 18:24:26 +0000 |
commit | bc5844e57978c2d236ef3b769e1e1120fcd48738 (patch) | |
tree | 854f8d449c0d371a1a0ad030cf6b6b164034c303 /extensions | |
parent | 1a150551a669a94dbdc316b452721b721354bedc (diff) | |
download | chromium_src-bc5844e57978c2d236ef3b769e1e1120fcd48738.zip chromium_src-bc5844e57978c2d236ef3b769e1e1120fcd48738.tar.gz chromium_src-bc5844e57978c2d236ef3b769e1e1120fcd48738.tar.bz2 |
kiosk: Fix network check skipped regression.
Fix the the regression by providing a more reasonable default value
for platform apps' default offline_enabled value: Apps default to
being offline enabled unless webview permission is requested.
BUG=349200,350129
TEST=ExtensionManifestOfflineEnabledTest.* and KioskTest.*LaunchAppNetworkDown
Review URL: https://codereview.chromium.org/181233007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255988 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions')
-rw-r--r-- | extensions/common/manifest_handlers/offline_enabled_info.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/extensions/common/manifest_handlers/offline_enabled_info.cc b/extensions/common/manifest_handlers/offline_enabled_info.cc index 1d1f8b1..11d0c6a 100644 --- a/extensions/common/manifest_handlers/offline_enabled_info.cc +++ b/extensions/common/manifest_handlers/offline_enabled_info.cc @@ -10,6 +10,8 @@ #include "base/strings/utf_string_conversions.h" #include "base/values.h" #include "extensions/common/manifest_constants.h" +#include "extensions/common/permissions/api_permission_set.h" +#include "extensions/common/permissions/permissions_data.h" namespace extensions { @@ -37,11 +39,17 @@ OfflineEnabledHandler::~OfflineEnabledHandler() { bool OfflineEnabledHandler::Parse(Extension* extension, base::string16* error) { if (!extension->manifest()->HasKey(keys::kOfflineEnabled)) { - // Only platform apps default to being enabled offline, and we should only - // attempt parsing without a key present if it is a platform app. + // Only platform apps are provided with a default offline enabled value. + // A platform app is offline enabled unless it requests the webview + // permission. That is, offline_enabled is true when there is NO webview + // permission requested and false when webview permission is present. DCHECK(extension->is_platform_app()); + + const bool has_webview_permission = + !!PermissionsData::GetInitialAPIPermissions(extension) + ->count(APIPermission::kWebView); extension->SetManifestData(keys::kOfflineEnabled, - new OfflineEnabledInfo(true)); + new OfflineEnabledInfo(!has_webview_permission)); return true; } |