summaryrefslogtreecommitdiff
path: root/chromium/content/public/browser/navigation_controller.cc
blob: 818f0b9aa3a64fd350db23ecdecd3a530b7c82c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Copyright (c) 2012 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.

#include "content/public/browser/navigation_controller.h"

#include "base/memory/ref_counted_memory.h"
#include "build/build_config.h"
#include "content/public/browser/page_navigator.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/was_activated_option.mojom.h"

namespace content {

NavigationController::LoadURLParams::LoadURLParams(const GURL& url)
    : url(url), is_renderer_initiated(false) {}

NavigationController::LoadURLParams::LoadURLParams(const OpenURLParams& input)
    : url(input.url),
      initiator_routing_id(input.initiator_routing_id),
      initiator_origin(input.initiator_origin),
      source_site_instance(input.source_site_instance),
      load_type(input.post_data ? LOAD_TYPE_HTTP_POST : LOAD_TYPE_DEFAULT),
      transition_type(input.transition),
      frame_tree_node_id(input.frame_tree_node_id),
      referrer(input.referrer),
      redirect_chain(input.redirect_chain),
      extra_headers(input.extra_headers),
      is_renderer_initiated(input.is_renderer_initiated),
      post_data(input.post_data),
      should_replace_current_entry(input.should_replace_current_entry),
      has_user_gesture(input.user_gesture),
      started_from_context_menu(input.started_from_context_menu),
      blob_url_loader_factory(input.blob_url_loader_factory),
      href_translate(input.href_translate),
      reload_type(input.reload_type),
      impression(input.impression) {
#if DCHECK_IS_ON()
  DCHECK(input.Valid());
#endif
  // A non-null |source_site_instance| is important for picking the right
  // renderer process for hosting about:blank and/or data: URLs (their origin's
  // precursor is based on |initiator_origin|).
  if (url.IsAboutBlank() || url.SchemeIs(url::kDataScheme)) {
    DCHECK_EQ(initiator_origin.has_value(),
              static_cast<bool>(source_site_instance));
  }

  // Implementation notes:
  //   The following LoadURLParams don't have an equivalent in OpenURLParams:
  //     base_url_for_data_url
  //     virtual_url_for_data_url
  //     data_url_as_string
  //
  //     can_load_local_resources
  //     frame_name
  //     from_download_cross_origin_redirect
  //     input_start
  //     navigation_ui_data
  //     override_user_agent
  //     should_clear_history_list
  //     was_activated
  //
  //   The following OpenURLParams don't have an equivalent in LoadURLParams:
  //     disposition
  //     open_app_window_if_possible
  //     source_render_frame_id
  //     source_render_process_id
  //     triggering_event_info
}

NavigationController::LoadURLParams::~LoadURLParams() {
}

}  // namespace content