blob: 7bd02344656b00b1c137f5db747093e86f4d5cf6 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_COMMON_HASHED_EXTENSION_ID_H_
#define EXTENSIONS_COMMON_HASHED_EXTENSION_ID_H_
#include <string>
#include "extensions/common/extension_id.h"
namespace extensions {
// A wrapper around a hex-encoded SHA1 hash of an extension ID. This struct is
// primarily to enforce type-safety, but also offers handy construction. The
// hashed ID of an extension is used to determine feature availability.
class HashedExtensionId {
public:
// Default constructor to initialize with an empty value. It'd be nice to get
// rid of this, but certain objects (like Manifest) don't have a valid ID at
// construction.
HashedExtensionId();
// Initialize a HashedExtensionId, given the original.
explicit HashedExtensionId(const ExtensionId& original_id);
HashedExtensionId(HashedExtensionId&& other);
HashedExtensionId(const HashedExtensionId& other);
HashedExtensionId& operator=(HashedExtensionId&& other);
HashedExtensionId& operator=(const HashedExtensionId& other);
const std::string& value() const { return value_; }
private:
// Not const to allow for assignment.
std::string value_;
};
} // namespace extensions
#endif // EXTENSIONS_COMMON_HASHED_EXTENSION_ID_H_