| Index: chrome/browser/browsing_data/browsing_data_media_license_helper.h
|
| diff --git a/chrome/browser/browsing_data/browsing_data_media_license_helper.h b/chrome/browser/browsing_data/browsing_data_media_license_helper.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d1cecfd6e4f4c663b44fbc42907e66a385a53ab3
|
| --- /dev/null
|
| +++ b/chrome/browser/browsing_data/browsing_data_media_license_helper.h
|
| @@ -0,0 +1,82 @@
|
| +// Copyright 2016 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 CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_MEDIA_LICENSE_HELPER_H_
|
| +#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_MEDIA_LICENSE_HELPER_H_
|
| +
|
| +#include <stdint.h>
|
| +#include <list>
|
| +
|
| +#include "base/callback.h"
|
| +#include "base/memory/ref_counted.h"
|
| +#include "base/time/time.h"
|
| +#include "url/gurl.h"
|
| +
|
| +namespace storage {
|
| +class FileSystemContext;
|
| +}
|
| +
|
| +// Defines an interface for classes that deal with aggregating and deleting
|
| +// media licenses.
|
| +// BrowsingDataMediaLicenseHelper instances for a specific profile should
|
| +// be created via the static Create method. Each instance will lazily fetch
|
| +// data when a client calls StartFetching from the UI thread, and will
|
| +// notify the client via a supplied callback when the data is available.
|
| +//
|
| +// The client's callback is passed a list of MediaLicenseInfo objects
|
| +// containing usage information for each origin's media licenses.
|
| +class BrowsingDataMediaLicenseHelper
|
| + : public base::RefCountedThreadSafe<BrowsingDataMediaLicenseHelper> {
|
| + public:
|
| + // Detailed information about a media license, including it's origin GURL
|
| + // and the amount of data (in bytes).
|
| + struct MediaLicenseInfo {
|
| + MediaLicenseInfo(const GURL& origin,
|
| + int64_t size,
|
| + base::Time last_modified_time);
|
| + MediaLicenseInfo(const MediaLicenseInfo& other);
|
| + ~MediaLicenseInfo();
|
| +
|
| + // The origin for which the information is relevant.
|
| + GURL origin;
|
| + // Size (in bytes).
|
| + int64_t size;
|
| + // Last modified time.
|
| + base::Time last_modified_time;
|
| + };
|
| +
|
| + using FetchCallback =
|
| + base::Callback<void(const std::list<MediaLicenseInfo>&)>;
|
| +
|
| + // Creates a BrowsingDataMediaLicenseHelper instance for the media
|
| + // licenses stored in |profile|'s user data directory. The
|
| + // BrowsingDataMediaLicenseHelper object will hold a reference to the
|
| + // Profile that's passed in, but is not responsible for destroying it.
|
| + //
|
| + // The BrowsingDataMediaLicenseHelper will not change the profile itself,
|
| + // but can modify data it contains (by removing media licenses).
|
| + static BrowsingDataMediaLicenseHelper* Create(
|
| + storage::FileSystemContext* file_system_context);
|
| +
|
| + // Starts the process of fetching media license data, which will call
|
| + // |callback| upon completion, passing it a constant list of
|
| + // MediaLicenseInfo objects. StartFetching must be called only in the UI
|
| + // thread; the provided Callback will likewise be executed asynchronously
|
| + // on the UI thread. Obtaining the data will occur asynchronously on the
|
| + // FILE thread.
|
| + virtual void StartFetching(const FetchCallback& callback) = 0;
|
| +
|
| + // Deletes any media licenses associated with |origin| from the disk.
|
| + // Deletion will occur asynchronously on the FILE thread, but this function
|
| + // must be called only on the UI thread.
|
| + virtual void DeleteMediaLicenseOrigin(const GURL& origin) = 0;
|
| +
|
| + protected:
|
| + friend class base::RefCountedThreadSafe<BrowsingDataMediaLicenseHelper>;
|
| +
|
| + BrowsingDataMediaLicenseHelper() {}
|
| + virtual ~BrowsingDataMediaLicenseHelper() {}
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_MEDIA_LICENSE_HELPER_H_
|
|
|