1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/media_galleries_permission_data.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h"
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/common/permissions/media_galleries_permission.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions {
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MediaGalleriesPermissionData::MediaGalleriesPermissionData() {
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool MediaGalleriesPermissionData::Check(
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const APIPermission::CheckParam* param) const {
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!param)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return false;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const MediaGalleriesPermission::CheckParam& specific_param =
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      *static_cast<const MediaGalleriesPermission::CheckParam*>(param);
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return permission_ == specific_param.permission;
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)scoped_ptr<base::Value> MediaGalleriesPermissionData::ToValue() const {
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return scoped_ptr<base::Value>(new base::StringValue(permission_));
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool MediaGalleriesPermissionData::FromValue(const base::Value* value) {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!value)
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return false;
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string raw_permission;
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!value->GetAsString(&raw_permission))
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return false;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  std::string permission;
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  base::TrimWhitespaceASCII(raw_permission, base::TRIM_ALL, &permission);
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (permission == MediaGalleriesPermission::kAllAutoDetectedPermission ||
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      permission == MediaGalleriesPermission::kScanPermission ||
43558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch      permission == MediaGalleriesPermission::kReadPermission ||
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      permission == MediaGalleriesPermission::kCopyToPermission ||
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      permission == MediaGalleriesPermission::kDeletePermission) {
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    permission_ = permission;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return true;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return false;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool MediaGalleriesPermissionData::operator<(
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const MediaGalleriesPermissionData& rhs) const {
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return permission_ < rhs.permission_;
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool MediaGalleriesPermissionData::operator==(
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const MediaGalleriesPermissionData& rhs) const {
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return permission_ == rhs.permission_;
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace extensions
63