1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/renderer/internal_document_state_data.h"
6
7#include "content/public/renderer/document_state.h"
8#include "third_party/WebKit/public/web/WebDataSource.h"
9
10namespace content {
11
12namespace {
13
14// Key InternalDocumentStateData is stored under in DocumentState.
15const char kUserDataKey[] = "InternalDocumentStateData";
16
17}
18
19InternalDocumentStateData::InternalDocumentStateData()
20    : did_first_visually_non_empty_layout_(false),
21      did_first_visually_non_empty_paint_(false),
22      http_status_code_(0),
23      use_error_page_(false),
24      is_overriding_user_agent_(false),
25      must_reset_scroll_and_scale_state_(false),
26      cache_policy_override_set_(false),
27      cache_policy_override_(blink::WebURLRequest::UseProtocolCachePolicy) {
28}
29
30// static
31InternalDocumentStateData* InternalDocumentStateData::FromDataSource(
32    blink::WebDataSource* ds) {
33  return FromDocumentState(static_cast<DocumentState*>(ds->extraData()));
34}
35
36// static
37InternalDocumentStateData* InternalDocumentStateData::FromDocumentState(
38    DocumentState* ds) {
39  if (!ds)
40    return NULL;
41  InternalDocumentStateData* data = static_cast<InternalDocumentStateData*>(
42      ds->GetUserData(&kUserDataKey));
43  if (!data) {
44    data = new InternalDocumentStateData;
45    ds->SetUserData(&kUserDataKey, data);
46  }
47  return data;
48}
49
50InternalDocumentStateData::~InternalDocumentStateData() {
51}
52
53}  // namespace content
54