Home | History | Annotate | Download | only in sockets
      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/api/sockets/sockets_manifest_handler.h"
      6 
      7 #include "extensions/common/api/sockets/sockets_manifest_data.h"
      8 #include "extensions/common/api/sockets/sockets_manifest_permission.h"
      9 #include "extensions/common/extension.h"
     10 #include "extensions/common/manifest_constants.h"
     11 
     12 namespace extensions {
     13 
     14 SocketsManifestHandler::SocketsManifestHandler() {}
     15 
     16 SocketsManifestHandler::~SocketsManifestHandler() {}
     17 
     18 bool SocketsManifestHandler::Parse(Extension* extension,
     19                                    base::string16* error) {
     20   const base::Value* sockets = NULL;
     21   CHECK(extension->manifest()->Get(manifest_keys::kSockets, &sockets));
     22   scoped_ptr<SocketsManifestData> data =
     23       SocketsManifestData::FromValue(*sockets, error);
     24   if (!data)
     25     return false;
     26 
     27   extension->SetManifestData(manifest_keys::kSockets, data.release());
     28   return true;
     29 }
     30 
     31 ManifestPermission* SocketsManifestHandler::CreatePermission() {
     32   return new SocketsManifestPermission();
     33 }
     34 
     35 ManifestPermission* SocketsManifestHandler::CreateInitialRequiredPermission(
     36     const Extension* extension) {
     37   SocketsManifestData* data = SocketsManifestData::Get(extension);
     38   if (data)
     39     return data->permission()->Clone();
     40   return NULL;
     41 }
     42 
     43 const std::vector<std::string> SocketsManifestHandler::Keys() const {
     44   return SingleKey(manifest_keys::kSockets);
     45 }
     46 
     47 }  // namespace extensions
     48