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

Side by Side Diff: blimp/client/session/navigation_feature.cc

Issue 1636163002: Restructure contents of blimp/client. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
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 "blimp/client/session/navigation_feature.h"
6
7 #include "blimp/common/create_blimp_message.h"
8 #include "blimp/common/proto/blimp_message.pb.h"
9 #include "blimp/common/proto/navigation.pb.h"
10 #include "net/base/net_errors.h"
11 #include "url/gurl.h"
12
13 namespace blimp {
14 namespace client {
15
16 NavigationFeature::NavigationFeature() {}
17
18 NavigationFeature::~NavigationFeature() {}
19
20 void NavigationFeature::set_outgoing_message_processor(
21 scoped_ptr<BlimpMessageProcessor> processor) {
22 outgoing_message_processor_ = std::move(processor);
23 }
24
25 void NavigationFeature::SetDelegate(int tab_id,
26 NavigationFeatureDelegate* delegate) {
27 DCHECK(!FindDelegate(tab_id));
28 delegates_[tab_id] = delegate;
29 }
30
31 void NavigationFeature::RemoveDelegate(int tab_id) {
32 DelegateMap::iterator it = delegates_.find(tab_id);
33 if (it != delegates_.end())
34 delegates_.erase(it);
35 }
36
37 void NavigationFeature::NavigateToUrlText(int tab_id,
38 const std::string& url_text) {
39 NavigationMessage* navigation_message;
40 scoped_ptr<BlimpMessage> blimp_message =
41 CreateBlimpMessage(&navigation_message, tab_id);
42 navigation_message->set_type(NavigationMessage::LOAD_URL);
43 navigation_message->mutable_load_url()->set_url(url_text);
44 outgoing_message_processor_->ProcessMessage(std::move(blimp_message),
45 net::CompletionCallback());
46 }
47
48 void NavigationFeature::Reload(int tab_id) {
49 NavigationMessage* navigation_message;
50 scoped_ptr<BlimpMessage> blimp_message =
51 CreateBlimpMessage(&navigation_message, tab_id);
52 navigation_message->set_type(NavigationMessage::RELOAD);
53
54 outgoing_message_processor_->ProcessMessage(std::move(blimp_message),
55 net::CompletionCallback());
56 }
57
58 void NavigationFeature::GoForward(int tab_id) {
59 NavigationMessage* navigation_message;
60 scoped_ptr<BlimpMessage> blimp_message =
61 CreateBlimpMessage(&navigation_message, tab_id);
62 navigation_message->set_type(NavigationMessage::GO_FORWARD);
63
64 outgoing_message_processor_->ProcessMessage(std::move(blimp_message),
65 net::CompletionCallback());
66 }
67
68 void NavigationFeature::GoBack(int tab_id) {
69 NavigationMessage* navigation_message;
70 scoped_ptr<BlimpMessage> blimp_message =
71 CreateBlimpMessage(&navigation_message, tab_id);
72 navigation_message->set_type(NavigationMessage::GO_BACK);
73
74 outgoing_message_processor_->ProcessMessage(std::move(blimp_message),
75 net::CompletionCallback());
76 }
77
78 void NavigationFeature::ProcessMessage(
79 scoped_ptr<BlimpMessage> message,
80 const net::CompletionCallback& callback) {
81 DCHECK(!callback.is_null());
82 DCHECK(message->type() == BlimpMessage::NAVIGATION);
83
84 int tab_id = message->target_tab_id();
85 DCHECK(message->has_navigation());
86 const NavigationMessage& navigation_message = message->navigation();
87
88 NavigationFeatureDelegate* delegate = FindDelegate(tab_id);
89 DCHECK(delegate) << "NavigationFeatureDelegate not found for tab " << tab_id;
90 switch (navigation_message.type()) {
91 case NavigationMessage::NAVIGATION_STATE_CHANGED: {
92 const NavigationStateChangeMessage& details =
93 navigation_message.navigation_state_change();
94 if (details.has_url())
95 delegate->OnUrlChanged(tab_id, GURL(details.url()));
96
97 if (details.has_title())
98 delegate->OnTitleChanged(tab_id, details.title());
99
100 if (details.has_loading())
101 delegate->OnLoadingChanged(tab_id, details.loading());
102
103 if (details.has_favicon()) {
104 NOTIMPLEMENTED();
105 }
106 } break;
107 case NavigationMessage::LOAD_URL:
108 case NavigationMessage::GO_BACK:
109 case NavigationMessage::GO_FORWARD:
110 case NavigationMessage::RELOAD:
111 NOTREACHED() << "Client received unexpected navigation type.";
112 break;
113 case NavigationMessage::UNKNOWN:
114 NOTREACHED();
115 }
116
117 callback.Run(net::OK);
118 }
119
120 NavigationFeature::NavigationFeatureDelegate* NavigationFeature::FindDelegate(
121 const int tab_id) {
122 DelegateMap::const_iterator it = delegates_.find(tab_id);
123 if (it != delegates_.end())
124 return it->second;
125 return nullptr;
126 }
127
128 } // namespace client
129 } // namespace blimp
OLDNEW
« no previous file with comments | « blimp/client/session/navigation_feature.h ('k') | blimp/client/session/navigation_feature_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698