// Copyright 2013 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_BASE_FAVICON_URL_PARSER_H_
#define COMPONENTS_FAVICON_BASE_FAVICON_URL_PARSER_H_

#include <stddef.h>

#include <string>

namespace chrome {

struct ParsedFaviconPath {
  // Whether the URL has the "iconurl" parameter.
  bool is_icon_url;

  // The URL from which the favicon is being requested.
  std::string url;

  // The size of the requested favicon in dip.
  int size_in_dip;

  // The device scale factor of the requested favicon.
  float device_scale_factor;

  // The index of the first character (relative to the path) where the the URL
  // from which the favicon is being requested is located.
  size_t path_index;
};

// Parses |path|, which should be in the format described at the top of the
// file "chrome/browser/ui/webui/favicon_source.h". |icon_types| indicates
// which icon types are supported. Returns true if |path| could be parsed.
// The result of the parsing will be stored in a ParsedFaviconPath struct.
bool ParseFaviconPath(const std::string& path,
                      int icon_types,
                      ParsedFaviconPath* parsed);

}  // namespace chrome

#endif  // COMPONENTS_FAVICON_BASE_FAVICON_URL_PARSER_H_
