Skip to content

Commit

Permalink
Stop prompting for the file system write permission in packaged apps.
Browse files Browse the repository at this point in the history
The user has to grant permission to specific files via a file picker,
which is considered permission enough.

BUG=363399

Review URL: https://codereview.chromium.org/253433002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267081 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
benwells@chromium.org committed Apr 30, 2014
1 parent 8a7262d commit f81a8b3
Show file tree
Hide file tree
Showing 6 changed files with 10 additions and 23 deletions.
3 changes: 0 additions & 3 deletions chrome/app/generated_resources.grd
Original file line number Diff line number Diff line change
Expand Up @@ -4382,9 +4382,6 @@ Make sure you do not expose any sensitive information.
<message name="IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY" desc="Permission string for read access to directories and their contents.">
Read folders that you open in the application
</message>
<message name="IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE" desc="Permission string for write access to the file system.">
Write to files that you open in the application
</message>
<message name="IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY" desc="Permission string for write access to directories and their contents.">
Write to files and folders that you open in the application
</message>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -329,10 +329,7 @@ std::vector<APIPermissionInfo*> ChromeAPIPermissions::GetAllPermissions()
PermissionMessage::kFileSystemDirectory},
{APIPermission::kFileSystemProvider, "fileSystemProvider"},
{APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"},
{APIPermission::kFileSystemWrite, "fileSystem.write",
APIPermissionInfo::kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE,
PermissionMessage::kFileSystemWrite},
{APIPermission::kFileSystemWrite, "fileSystem.write"},
{APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory",
APIPermissionInfo::kFlagNone,
IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -257,12 +257,8 @@ ChromePermissionMessageProvider::GetAPIPermissionMessages(
}

// A special hack: If kFileSystemWriteDirectory would be displayed, hide
// kFileSystemDirectory and and kFileSystemWrite as the write directory
// message implies the other two.
// kFileSystemDirectory as the write directory message implies it.
// TODO(sammc): Remove this. See http://crbug.com/284849.
SuppressMessage(messages,
PermissionMessage::kFileSystemWriteDirectory,
PermissionMessage::kFileSystemWrite);
SuppressMessage(messages,
PermissionMessage::kFileSystemWriteDirectory,
PermissionMessage::kFileSystemDirectory);
Expand Down Expand Up @@ -335,18 +331,14 @@ bool ChromePermissionMessageProvider::IsAPIPrivilegeIncrease(
PermissionMsgSet delta_warnings =
base::STLSetDifference<PermissionMsgSet>(new_warnings, old_warnings);

// A special hack: kFileSystemWriteDirectory implies kFileSystemDirectory and
// kFileSystemWrite.
// A special hack: kFileSystemWriteDirectory implies kFileSystemDirectory.
// TODO(sammc): Remove this. See http://crbug.com/284849.
if (old_warnings.find(PermissionMessage(
PermissionMessage::kFileSystemWriteDirectory, base::string16())) !=
old_warnings.end()) {
delta_warnings.erase(
PermissionMessage(PermissionMessage::kFileSystemDirectory,
base::string16()));
delta_warnings.erase(
PermissionMessage(PermissionMessage::kFileSystemWrite,
base::string16()));
}

// It is a privilege increase if there are additional warnings present.
Expand Down
10 changes: 5 additions & 5 deletions chrome/common/extensions/permissions/permission_set_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -754,6 +754,7 @@ TEST(PermissionsTest, PermissionMessages) {
skip.insert(APIPermission::kFileSystem);
skip.insert(APIPermission::kFileSystemProvider);
skip.insert(APIPermission::kFileSystemRetainEntries);
skip.insert(APIPermission::kFileSystemWrite);
skip.insert(APIPermission::kSocket);
skip.insert(APIPermission::kUsbDevice);

Expand Down Expand Up @@ -784,15 +785,14 @@ TEST(PermissionsTest, FileSystemPermissionMessages) {
PermissionMessages messages =
PermissionMessageProvider::Get()->GetPermissionMessages(
permissions, Manifest::TYPE_PLATFORM_APP);
ASSERT_EQ(2u, messages.size());
ASSERT_EQ(1u, messages.size());
std::sort(messages.begin(), messages.end());
std::set<PermissionMessage::ID> ids;
for (PermissionMessages::const_iterator it = messages.begin();
it != messages.end(); ++it) {
ids.insert(it->id());
}
EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemDirectory));
EXPECT_TRUE(ContainsKey(ids, PermissionMessage::kFileSystemWrite));
}

TEST(PermissionsTest, HiddenFileSystemPermissionMessages) {
Expand Down Expand Up @@ -891,9 +891,9 @@ TEST(PermissionsTest, MergedFileSystemPermissionComparison) {
EXPECT_TRUE(provider->IsPrivilegeIncrease(write_permissions,
write_directory_permissions,
Manifest::TYPE_PLATFORM_APP));
EXPECT_TRUE(provider->IsPrivilegeIncrease(directory_permissions,
write_permissions,
Manifest::TYPE_PLATFORM_APP));
EXPECT_FALSE(provider->IsPrivilegeIncrease(directory_permissions,
write_permissions,
Manifest::TYPE_PLATFORM_APP));
EXPECT_TRUE(provider->IsPrivilegeIncrease(directory_permissions,
write_directory_permissions,
Manifest::TYPE_PLATFORM_APP));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"permissions": [
"http://example.com",
"fileSystem",
"fileSystem.directory",
"fileSystem.write"
]
}
2 changes: 1 addition & 1 deletion extensions/common/permissions/permission_message.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class PermissionMessage {
kAudioCapture,
kVideoCapture,
kDownloads,
kFileSystemWrite,
kDeleted_FileSystemWrite,
kMediaGalleriesAllGalleriesRead,
kSerial,
kSocketAnyHost,
Expand Down

0 comments on commit f81a8b3

Please sign in to comment.