12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- // Copyright 2014 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_BROWSER_CONTENT_HASH_FETCHER_H_
- #define EXTENSIONS_BROWSER_CONTENT_HASH_FETCHER_H_
- #include <map>
- #include <set>
- #include <string>
- #include <utility>
- #include "base/callback.h"
- #include "base/memory/weak_ptr.h"
- #include "extensions/browser/content_verifier/content_hash.h"
- #include "extensions/common/extension_id.h"
- namespace base {
- class SequencedTaskRunner;
- }
- namespace network {
- class SimpleURLLoader;
- } // namespace network
- namespace extensions {
- namespace internals {
- // This class is responsible for getting signed expected hashes for use in
- // extension content verification.
- //
- // This class takes care of doing the network I/O work to ensure we
- // have the contents of verified_contents.json files from the webstore.
- //
- // Note: This class manages its own lifetime. It deletes itself when
- // Start() completes at OnSimpleLoaderComplete().
- //
- // Note: This class is an internal implementation detail of ContentHash and is
- // not be used independently.
- // TODO(lazyboy): Consider changing BUILD rules to enforce the above, yet
- // keeping the class unit testable.
- class ContentHashFetcher {
- public:
- // A callback for when fetch is complete.
- // The response contents is passed through std::unique_ptr<std::string>. In
- // case of failure the error code is passed as a last argument.
- using HashFetcherCallback =
- base::OnceCallback<void(ContentHash::FetchKey,
- std::unique_ptr<std::string>,
- ContentHash::FetchErrorCode)>;
- ContentHashFetcher(ContentHash::FetchKey fetch_key);
- ContentHashFetcher(const ContentHashFetcher&) = delete;
- ContentHashFetcher& operator=(const ContentHashFetcher&) = delete;
- // Note: |this| is deleted once OnSimpleLoaderComplete() completes.
- void Start(HashFetcherCallback hash_fetcher_callback);
- private:
- friend class base::RefCounted<ContentHashFetcher>;
- ~ContentHashFetcher();
- void OnSimpleLoaderComplete(std::unique_ptr<std::string> response_body);
- ContentHash::FetchKey fetch_key_;
- HashFetcherCallback hash_fetcher_callback_;
- scoped_refptr<base::SequencedTaskRunner> response_task_runner_;
- // Alive when url fetch is ongoing.
- std::unique_ptr<network::SimpleURLLoader> simple_loader_;
- SEQUENCE_CHECKER(sequence_checker_);
- };
- } // namespace internals
- } // namespace extensions
- #endif // EXTENSIONS_BROWSER_CONTENT_HASH_FETCHER_H_
|