• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "content/renderer/fetchers/alt_error_page_resource_fetcher.h"
9 #include "third_party/WebKit/public/web/WebDataSource.h"
10 
11 namespace content {
12 
13 namespace {
14 
15 // Key InternalDocumentStateData is stored under in DocumentState.
16 const char kUserDataKey[] = "InternalDocumentStateData";
17 
18 }
19 
InternalDocumentStateData()20 InternalDocumentStateData::InternalDocumentStateData()
21     : did_first_visually_non_empty_layout_(false),
22       did_first_visually_non_empty_paint_(false),
23       http_status_code_(0),
24       use_error_page_(false),
25       is_overriding_user_agent_(false),
26       must_reset_scroll_and_scale_state_(false),
27       cache_policy_override_set_(false),
28       cache_policy_override_(blink::WebURLRequest::UseProtocolCachePolicy),
29       referrer_policy_set_(false),
30       referrer_policy_(blink::WebReferrerPolicyDefault) {
31 }
32 
33 // static
FromDataSource(blink::WebDataSource * ds)34 InternalDocumentStateData* InternalDocumentStateData::FromDataSource(
35     blink::WebDataSource* ds) {
36   return FromDocumentState(static_cast<DocumentState*>(ds->extraData()));
37 }
38 
39 // static
FromDocumentState(DocumentState * ds)40 InternalDocumentStateData* InternalDocumentStateData::FromDocumentState(
41     DocumentState* ds) {
42   if (!ds)
43     return NULL;
44   InternalDocumentStateData* data = static_cast<InternalDocumentStateData*>(
45       ds->GetUserData(&kUserDataKey));
46   if (!data) {
47     data = new InternalDocumentStateData;
48     ds->SetUserData(&kUserDataKey, data);
49   }
50   return data;
51 }
52 
~InternalDocumentStateData()53 InternalDocumentStateData::~InternalDocumentStateData() {
54 }
55 
set_alt_error_page_fetcher(AltErrorPageResourceFetcher * f)56 void InternalDocumentStateData::set_alt_error_page_fetcher(
57     AltErrorPageResourceFetcher* f) {
58   alt_error_page_fetcher_.reset(f);
59 }
60 
61 }  // namespace content
62