summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-10 18:24:26 +0000
committerxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-10 18:24:26 +0000
commitbc5844e57978c2d236ef3b769e1e1120fcd48738 (patch)
tree854f8d449c0d371a1a0ad030cf6b6b164034c303 /extensions
parent1a150551a669a94dbdc316b452721b721354bedc (diff)
downloadchromium_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.cc14
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;
}