// Copyright 2014 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 CONTENT_COMMON_FRAME_MESSAGE_ENUMS_H_
#define CONTENT_COMMON_FRAME_MESSAGE_ENUMS_H_

#include "content/common/accessibility_mode_enums.h"

struct FrameMsg_Navigate_Type {
 public:
  enum Value {
    // Reload the page.
    RELOAD,

    // Reload the page, ignoring any cache entries.
    RELOAD_IGNORING_CACHE,

    // Reload the page using the original request URL.
    RELOAD_ORIGINAL_REQUEST_URL,

    // The navigation is the result of session restore and should honor the
    // page's cache policy while restoring form state. This is set to true if
    // restoring a tab/session from the previous session and the previous
    // session did not crash. If this is not set and the page was restored then
    // the page's cache policy is ignored and we load from the cache.
    RESTORE,

    // Like RESTORE, except that the navigation contains POST data.
    RESTORE_WITH_POST,

    // Navigation type not categorized by the other types.
    NORMAL,

    // Last guard value, so we can use it for validity checks.
    NAVIGATE_TYPE_LAST = NORMAL,
  };
};

struct FrameMsg_UILoadMetricsReportType {
 public:
  enum Value {
    // Do not report metrics for this load.
    NO_REPORT,

    // Report metrics for this load, that originated from clicking on a link.
    REPORT_LINK,

    // Report metrics for this load, that originated from an Android OS intent.
    REPORT_INTENT,

    REPORT_TYPE_LAST = REPORT_INTENT,
  };
};

#endif  // CONTENT_COMMON_FRAME_MESSAGE_ENUMS_H_
