|  | // 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 CONTENT_BROWSER_BLOB_STORAGE_BLOB_REGISTRY_WRAPPER_H_ | 
|  | #define CONTENT_BROWSER_BLOB_STORAGE_BLOB_REGISTRY_WRAPPER_H_ | 
|  |  | 
|  | #include "base/memory/ref_counted.h" | 
|  | #include "content/public/browser/browser_thread.h" | 
|  | #include "third_party/blink/public/mojom/blob/blob_registry.mojom.h" | 
|  |  | 
|  | namespace storage { | 
|  | class BlobRegistryImpl; | 
|  | class FileSystemContext; | 
|  | }  // namespace storage | 
|  |  | 
|  | namespace content { | 
|  | class ChromeBlobStorageContext; | 
|  |  | 
|  | // A ref-counted wrapper around BlobRegistryImpl to allow StoragePartitionImpl | 
|  | // to own the BlobRegistry on the UI thread, while the actual BlobRegistryImpl | 
|  | // lives on the IO thread. | 
|  | // | 
|  | // All methods, except for the constructor, are expected to be called on the IO | 
|  | // thread. | 
|  | class BlobRegistryWrapper | 
|  | : public base::RefCountedThreadSafe<BlobRegistryWrapper, | 
|  | BrowserThread::DeleteOnIOThread> { | 
|  | public: | 
|  | static scoped_refptr<BlobRegistryWrapper> Create( | 
|  | scoped_refptr<ChromeBlobStorageContext> blob_storage_context, | 
|  | scoped_refptr<storage::FileSystemContext> file_system_context); | 
|  |  | 
|  | void Bind(int process_id, blink::mojom::BlobRegistryRequest request); | 
|  |  | 
|  | private: | 
|  | BlobRegistryWrapper(); | 
|  | friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>; | 
|  | friend class base::DeleteHelper<BlobRegistryWrapper>; | 
|  | ~BlobRegistryWrapper(); | 
|  |  | 
|  | void InitializeOnIOThread( | 
|  | scoped_refptr<ChromeBlobStorageContext> blob_storage_context, | 
|  | scoped_refptr<storage::FileSystemContext> file_system_context); | 
|  |  | 
|  | std::unique_ptr<storage::BlobRegistryImpl> blob_registry_; | 
|  | }; | 
|  |  | 
|  | }  // namespace content | 
|  |  | 
|  | #endif  // CONTENT_BROWSER_BLOB_STORAGE_BLOB_REGISTRY_WRAPPER_H_ |