blob: 4f582fd08adc0485659acbb6f3f87b4442eeeaf1 [file] [log] [blame]
// Copyright 2020 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_SAFETY_CHECK_UPDATE_CHECK_HELPER_H_
#define COMPONENTS_SAFETY_CHECK_UPDATE_CHECK_HELPER_H_
#include "base/callback_forward.h"
#include "net/http/http_response_headers.h"
namespace network {
class SharedURLLoaderFactory;
class SimpleURLLoader;
} // namespace network
namespace safety_check {
// A helper for the update check part of the Safety check to fix missing
// |VersionUpdater| states, such as "Offline" on Windows and Mac.
class UpdateCheckHelper {
public:
explicit UpdateCheckHelper(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory);
virtual ~UpdateCheckHelper();
using ConnectivityCheckCallback = base::OnceCallback<void(bool connected)>;
// Checks connectivity to a Google endpoint (gstatic.com) and invokes the
// callback with the result. Has a request timeout of 5 seconds. Anything
// other than the intended HTTP 204 response is considered as no connectivity
// (user behind proxy, etc).
virtual void CheckConnectivity(
ConnectivityCheckCallback connection_check_callback);
protected:
// Test-only constructor.
UpdateCheckHelper();
private:
void OnURLLoadComplete(scoped_refptr<net::HttpResponseHeaders> headers);
ConnectivityCheckCallback result_callback_;
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
std::unique_ptr<network::SimpleURLLoader> url_loader_;
};
} // namespace safety_check
#endif // COMPONENTS_SAFETY_CHECK_UPDATE_CHECK_HELPER_H_