1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "extensions/common/permissions/media_galleries_permission_data.h"
6
7#include "base/strings/string_util.h"
8#include "base/values.h"
9#include "extensions/common/permissions/media_galleries_permission.h"
10
11namespace extensions {
12
13MediaGalleriesPermissionData::MediaGalleriesPermissionData() {
14}
15
16bool MediaGalleriesPermissionData::Check(
17    const APIPermission::CheckParam* param) const {
18  if (!param)
19    return false;
20
21  const MediaGalleriesPermission::CheckParam& specific_param =
22      *static_cast<const MediaGalleriesPermission::CheckParam*>(param);
23  return permission_ == specific_param.permission;
24}
25
26scoped_ptr<base::Value> MediaGalleriesPermissionData::ToValue() const {
27  return scoped_ptr<base::Value>(new base::StringValue(permission_));
28}
29
30bool MediaGalleriesPermissionData::FromValue(const base::Value* value) {
31  if (!value)
32    return false;
33
34  std::string raw_permission;
35  if (!value->GetAsString(&raw_permission))
36    return false;
37
38  std::string permission;
39  base::TrimWhitespaceASCII(raw_permission, base::TRIM_ALL, &permission);
40
41  if (permission == MediaGalleriesPermission::kAllAutoDetectedPermission ||
42      permission == MediaGalleriesPermission::kScanPermission ||
43      permission == MediaGalleriesPermission::kReadPermission ||
44      permission == MediaGalleriesPermission::kCopyToPermission ||
45      permission == MediaGalleriesPermission::kDeletePermission) {
46    permission_ = permission;
47    return true;
48  }
49  return false;
50}
51
52bool MediaGalleriesPermissionData::operator<(
53    const MediaGalleriesPermissionData& rhs) const {
54  return permission_ < rhs.permission_;
55}
56
57bool MediaGalleriesPermissionData::operator==(
58    const MediaGalleriesPermissionData& rhs) const {
59  return permission_ == rhs.permission_;
60}
61
62}  // namespace extensions
63