blob: 94b5a2b5b275b73545cbd1a119e026a2bc8a8b6a [file] [log] [blame]
// 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 CHROME_BROWSER_SEARCH_ONE_GOOGLE_BAR_ONE_GOOGLE_BAR_FETCHER_H_
#define CHROME_BROWSER_SEARCH_ONE_GOOGLE_BAR_ONE_GOOGLE_BAR_FETCHER_H_
#include "base/callback_forward.h"
#include "base/optional.h"
struct OneGoogleBarData;
// Interface for fetching OneGoogleBarData over the network.
class OneGoogleBarFetcher {
public:
enum class Status {
// Received a valid response.
OK,
// Some transient error occurred, e.g. the network request failed because
// there is no network connectivity. A previously cached response may still
// be used.
TRANSIENT_ERROR,
// A fatal error occurred, such as the server responding with an error code
// or with invalid data. Any previously cached response should be cleared.
FATAL_ERROR
};
using OneGoogleCallback =
base::OnceCallback<void(Status, const base::Optional<OneGoogleBarData>&)>;
virtual ~OneGoogleBarFetcher() = default;
// Initiates a fetch from the network. On completion (successful or not), the
// callback will be called with the result, which will be nullopt on failure.
virtual void Fetch(OneGoogleCallback callback) = 0;
};
#endif // CHROME_BROWSER_SEARCH_ONE_GOOGLE_BAR_ONE_GOOGLE_BAR_FETCHER_H_