summaryrefslogtreecommitdiffstats
path: root/components/favicon/core/browser/favicon_client.h
blob: 71cdbb5eb8608e10d846f6bf83489d542c74801f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// 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 COMPONENTS_FAVICON_CORE_BROWSER_FAVICON_CLIENT_H_
#define COMPONENTS_FAVICON_CORE_BROWSER_FAVICON_CLIENT_H_

#include <vector>

#include "base/macros.h"
#include "base/task/cancelable_task_tracker.h"
#include "components/favicon_base/favicon_callback.h"
#include "components/keyed_service/core/keyed_service.h"

class GURL;

// This class abstracts operations that depend on the embedder's environment,
// e.g. Chrome.
class FaviconClient : public KeyedService {
 public:
  // Returns true if the specified URL is bookmarked.
  virtual bool IsBookmarked(const GURL& url) = 0;

  // Returns true if the specified URL is a native application page URL.
  // If this returns true the favicon for the page must be fetched using
  // GetFaviconForNativeApplicationURL().
  virtual bool IsNativeApplicationURL(const GURL& url) = 0;

  // Requests the favicon for a native application page URL for the sizes
  // specified by |desired_sizes_in_pixel|. Returns a TaskId to use to cancel
  // the request using |tracker| or kBadTaskId if the request cannot be
  // scheduled. |callback| will be called with the favicon results.
  virtual base::CancelableTaskTracker::TaskId GetFaviconForNativeApplicationURL(
      const GURL& url,
      const std::vector<int>& desired_sizes_in_pixel,
      const favicon_base::FaviconResultsCallback& callback,
      base::CancelableTaskTracker* tracker) = 0;

 protected:
  FaviconClient() {}
  ~FaviconClient() override {}

 private:
  DISALLOW_COPY_AND_ASSIGN(FaviconClient);
};

#endif  // COMPONENTS_FAVICON_CORE_BROWSER_FAVICON_CLIENT_H_