blob: cafd068634dde132543e8b599ecf2bd15dd56b02 [file] [log] [blame]
// Copyright 2016 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_OFFLINE_PAGES_BACKGROUND_OFFLINER_H_
#define COMPONENTS_OFFLINE_PAGES_BACKGROUND_OFFLINER_H_
#include <string>
#include "base/callback.h"
namespace offline_pages {
class SavePageRequest;
// Interface of a class responsible for constructing an offline page given
// a request with a URL.
class Offliner {
public:
// Status of processing an offline page request.
// WARNING: You must update histograms.xml to match any changes made to
// this enum (ie, OfflinePagesBackgroundOfflinerRequestStatus histogram enum).
// Also update related switch code in RequestCoordinatorEventLogger.
enum RequestStatus {
// No status determined/reported yet. Interim status, not sent in callback.
UNKNOWN = 0,
// Page loaded but not (yet) saved. Interim status, not sent in callback.
LOADED = 1,
// Offline page snapshot saved.
SAVED = 2,
// RequestCoordinator canceled request.
REQUEST_COORDINATOR_CANCELED = 3,
// Prerendering was canceled.
PRERENDERING_CANCELED = 4,
// Prerendering failed to load page.
PRERENDERING_FAILED = 5,
// Failed to save loaded page.
SAVE_FAILED = 6,
// Foreground transition canceled request.
FOREGROUND_CANCELED = 7,
// RequestCoordinator canceled request attempt per time limit.
REQUEST_COORDINATOR_TIMED_OUT = 8,
// The loader did not accept/start the request.
PRERENDERING_NOT_STARTED = 9,
// Prerendering failed with hard error so should not retry the request.
PRERENDERING_FAILED_NO_RETRY = 10,
// NOTE: insert new values above this line and update histogram enum too.
STATUS_COUNT
};
// Reports the completion status of a request.
// TODO(dougarnett): consider passing back a request id instead of request.
typedef base::Callback<void(const SavePageRequest&, RequestStatus)>
CompletionCallback;
Offliner() {}
virtual ~Offliner() {}
// Processes |request| to load and save an offline page.
// Returns whether the request was accepted or not. |callback| is guaranteed
// to be called if the request was accepted and |Cancel()| is not called.
virtual bool LoadAndSave(
const SavePageRequest& request,
const CompletionCallback& callback) = 0;
// Clears the currently processing request, if any, and skips running its
// CompletionCallback.
virtual void Cancel() = 0;
// TODO(dougarnett): add policy support methods.
};
} // namespace offline_pages
#endif // COMPONENTS_OFFLINE_PAGES_BACKGROUND_OFFLINER_H_