Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Side by Side Diff: components/web_view/frame_tree.cc

Issue 1677293002: Bye bye Mandoline (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: moar Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/web_view/frame_tree.h ('k') | components/web_view/frame_tree_delegate.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 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 "components/web_view/frame_tree.h"
6
7 #include <utility>
8
9 #include "components/web_view/frame_tree_delegate.h"
10 #include "components/web_view/frame_user_data.h"
11
12 namespace web_view {
13
14 FrameTree::FrameTree(uint32_t root_app_id,
15 mus::Window* window,
16 mus::mojom::WindowTreeClientPtr window_tree_client,
17 FrameTreeDelegate* delegate,
18 mojom::FrameClient* root_client,
19 scoped_ptr<FrameUserData> user_data,
20 const Frame::ClientPropertyMap& client_properties,
21 base::TimeTicks navigation_start_time)
22 : window_(window),
23 delegate_(delegate),
24 root_(new Frame(this,
25 window,
26 window->id(),
27 root_app_id,
28 WindowOwnership::DOESNT_OWN_WINDOW,
29 root_client,
30 std::move(user_data),
31 client_properties)),
32 progress_(0.f),
33 change_id_(1u) {
34 root_->Init(nullptr, std::move(window_tree_client), nullptr,
35 navigation_start_time);
36 }
37
38 FrameTree::~FrameTree() {
39 // Destroy the root explicitly in case it calls back to us for state (such
40 // as to see if it is the root).
41 delete root_;
42 root_ = nullptr;
43 }
44
45 Frame* FrameTree::CreateChildFrame(
46 Frame* parent,
47 mojo::InterfaceRequest<mojom::Frame> frame_request,
48 mojom::FrameClientPtr client,
49 uint32_t frame_id,
50 uint32_t app_id,
51 const Frame::ClientPropertyMap& client_properties) {
52 mojom::FrameClient* raw_client = client.get();
53 scoped_ptr<FrameUserData> user_data =
54 delegate_->CreateUserDataForNewFrame(std::move(client));
55 mus::Window* frame_window = root_->window()->GetChildById(frame_id);
56 // |frame_window| may be null if the Window hasn't been created yet. If this
57 // is the case the Window will be connected to the Frame in
58 // Frame::OnTreeChanged.
59 Frame* frame = new Frame(this, frame_window, frame_id, app_id,
60 WindowOwnership::OWNS_WINDOW, raw_client,
61 std::move(user_data), client_properties);
62 frame->Init(parent, nullptr, std::move(frame_request), base::TimeTicks());
63 return frame;
64 }
65
66 uint32_t FrameTree::AdvanceChangeID() {
67 return ++change_id_;
68 }
69
70 void FrameTree::LoadingStateChanged() {
71 const bool loading = root_->IsLoading();
72 if (loading) {
73 int frame_count = 0;
74 const double total_progress = root_->GatherProgress(&frame_count);
75 // Make sure the progress bar never runs backwards, even if that means
76 // accuracy takes a hit.
77 progress_ = std::max(progress_, total_progress / frame_count);
78 }
79 delegate_->LoadingStateChanged(loading, progress_);
80 }
81
82 void FrameTree::TitleChanged(const mojo::String& title) {
83 delegate_->TitleChanged(title);
84 }
85
86 void FrameTree::DidCommitProvisionalLoad(Frame* source) {
87 delegate_->DidCommitProvisionalLoad(source);
88 }
89
90 void FrameTree::DidNavigateLocally(Frame* source, const GURL& url) {
91 delegate_->DidNavigateLocally(source, url);
92 }
93
94 void FrameTree::ClientPropertyChanged(const Frame* source,
95 const mojo::String& name,
96 const mojo::Array<uint8_t>& value) {
97 root_->NotifyClientPropertyChanged(source, name, value);
98 }
99
100 } // namespace web_view
OLDNEW
« no previous file with comments | « components/web_view/frame_tree.h ('k') | components/web_view/frame_tree_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698