OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/extensions/permissions/permissions_data.h" | 5 #include "chrome/common/extensions/permissions/permissions_data.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/string16.h" | 9 #include "base/string16.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 bool PermissionsData::ParsePermissions(Extension* extension, string16* error) { | 585 bool PermissionsData::ParsePermissions(Extension* extension, string16* error) { |
586 initial_required_permissions_.reset(new InitialPermissions); | 586 initial_required_permissions_.reset(new InitialPermissions); |
587 if (!ParseHelper(extension, | 587 if (!ParseHelper(extension, |
588 keys::kPermissions, | 588 keys::kPermissions, |
589 &initial_required_permissions_->api_permissions, | 589 &initial_required_permissions_->api_permissions, |
590 &initial_required_permissions_->host_permissions, | 590 &initial_required_permissions_->host_permissions, |
591 error)) { | 591 error)) { |
592 return false; | 592 return false; |
593 } | 593 } |
594 | 594 |
595 // Check for any permissions that are optional only. | |
596 for (APIPermissionSet::const_iterator iter = | |
597 initial_required_permissions_->api_permissions.begin(); | |
598 iter != initial_required_permissions_->api_permissions.end(); ++iter) { | |
599 if ((*iter)->info()->must_be_optional()) { | |
600 *error = ErrorUtils::FormatErrorMessageUTF16( | |
601 errors::kPermissionMustBeOptional, (*iter)->info()->name()); | |
602 return false; | |
603 } | |
604 } | |
605 | |
606 // TODO(jeremya/kalman) do this via the features system by exposing the | 595 // TODO(jeremya/kalman) do this via the features system by exposing the |
607 // app.window API to platform apps, with no dependency on any permissions. | 596 // app.window API to platform apps, with no dependency on any permissions. |
608 // See http://crbug.com/120069. | 597 // See http://crbug.com/120069. |
609 if (extension->is_platform_app()) { | 598 if (extension->is_platform_app()) { |
610 initial_required_permissions_->api_permissions.insert( | 599 initial_required_permissions_->api_permissions.insert( |
611 APIPermission::kAppCurrentWindowInternal); | 600 APIPermission::kAppCurrentWindowInternal); |
612 initial_required_permissions_->api_permissions.insert( | 601 initial_required_permissions_->api_permissions.insert( |
613 APIPermission::kAppRuntime); | 602 APIPermission::kAppRuntime); |
614 initial_required_permissions_->api_permissions.insert( | 603 initial_required_permissions_->api_permissions.insert( |
615 APIPermission::kAppWindow); | 604 APIPermission::kAppWindow); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 optional_permission_set_ = new PermissionSet( | 640 optional_permission_set_ = new PermissionSet( |
652 initial_optional_permissions_->api_permissions, | 641 initial_optional_permissions_->api_permissions, |
653 initial_optional_permissions_->host_permissions, | 642 initial_optional_permissions_->host_permissions, |
654 URLPatternSet()); | 643 URLPatternSet()); |
655 | 644 |
656 initial_required_permissions_.reset(); | 645 initial_required_permissions_.reset(); |
657 initial_optional_permissions_.reset(); | 646 initial_optional_permissions_.reset(); |
658 } | 647 } |
659 | 648 |
660 } // namespace extensions | 649 } // namespace extensions |
OLD | NEW |