blob: 89487fc7c88b4d22ffbf9cd99b4d6e49db0a8a60 [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_EXTENSIONS_FAVICON_FAVICON_UTIL_H_
#define CHROME_BROWSER_EXTENSIONS_FAVICON_FAVICON_UTIL_H_
#include "base/functional/callback.h"
#include "base/memory/scoped_refptr.h"
#include "components/favicon_base/favicon_types.h"
#include "extensions/buildflags/buildflags.h"
static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE));
class GURL;
namespace base {
class CancelableTaskTracker;
}
namespace chrome {
struct ParsedFaviconPath;
}
namespace content {
class BrowserContext;
}
namespace extensions {
class Extension;
namespace favicon_util {
// On errors, the callback will be invoked with a null bitmap_data.
using FaviconCallback =
base::OnceCallback<void(scoped_refptr<base::RefCountedMemory> bitmap_data)>;
// Fetch favicon asynchronously.
void GetFaviconForExtensionRequest(content::BrowserContext* browser_context,
const Extension* extension,
const GURL& favicon_url,
base::CancelableTaskTracker* tracker,
FaviconCallback callback);
// Parses the given favicon_url, populating parsed with the result.
// Returns true on success. Exposed for testing purposes.
bool ParseFaviconPath(const GURL& favicon_url,
chrome::ParsedFaviconPath* parsed);
} // namespace favicon_util
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_FAVICON_FAVICON_UTIL_H_