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

Side by Side Diff: chrome/browser/instant/instant_api_wrapper.cc

Issue 11824050: InstantExtended: Committed NTP (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Created 7 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 2012 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 "chrome/browser/instant/instant_api_wrapper.h"
6
7 #include "base/utf_string_conversions.h"
8 #include "chrome/common/render_messages.h"
9 #include "content/public/browser/web_contents.h"
10 #include "ui/base/resource/resource_bundle.h"
11 #include "ui/gfx/font.h"
12
13 InstantAPIWrapper::Controller::~Controller() {
14 }
15
16 InstantAPIWrapper::Receiver::~Receiver() {
17 }
18
19 InstantAPIWrapper::InstantAPIWrapper(Controller* controller,
20 Receiver* receiver)
21 : controller_(controller),
22 receiver_(receiver) {
23 }
24
25 InstantAPIWrapper::~InstantAPIWrapper() {
26 }
27
28 void InstantAPIWrapper::SetContents(content::WebContents* contents) {
29 Observe(contents);
30 }
31
32 void InstantAPIWrapper::Update(const string16& text,
33 size_t selection_start,
34 size_t selection_end,
35 bool verbatim) {
36 controller_->OnUpdate();
37 Send(new ChromeViewMsg_SearchBoxChange(routing_id(), text, verbatim,
38 selection_start, selection_end));
39 }
40
41 void InstantAPIWrapper::Submit(const string16& text) {
42 Send(new ChromeViewMsg_SearchBoxSubmit(routing_id(), text));
43 }
44
45 void InstantAPIWrapper::Cancel(const string16& text) {
46 Send(new ChromeViewMsg_SearchBoxCancel(routing_id(), text));
47 }
48
49 void InstantAPIWrapper::SetPopupBounds(const gfx::Rect& bounds) {
50 Send(new ChromeViewMsg_SearchBoxPopupResize(routing_id(), bounds));
51 }
52
53 void InstantAPIWrapper::SetMarginSize(const int start, const int end) {
54 Send(new ChromeViewMsg_SearchBoxMarginChange(routing_id(), start, end));
55 }
56
57 void InstantAPIWrapper::DetermineIfPageSupportsInstant() {
58 Send(new ChromeViewMsg_DetermineIfPageSupportsInstant(routing_id()));
59 }
60
61 void InstantAPIWrapper::SendAutocompleteResults(
62 const std::vector<InstantAutocompleteResult>& results) {
63 Send(new ChromeViewMsg_SearchBoxAutocompleteResults(routing_id(), results));
64 }
65
66 void InstantAPIWrapper::UpOrDownKeyPressed(int count) {
67 Send(new ChromeViewMsg_SearchBoxUpOrDownKeyPressed(routing_id(), count));
68 }
69
70 void InstantAPIWrapper::SearchModeChanged(const chrome::search::Mode& mode) {
71 Send(new ChromeViewMsg_SearchBoxModeChanged(routing_id(), mode));
72 }
73
74 void InstantAPIWrapper::SendThemeBackgroundInfo(
75 const ThemeBackgroundInfo& theme_info) {
76 Send(new ChromeViewMsg_SearchBoxThemeChanged(routing_id(), theme_info));
77 }
78
79 void InstantAPIWrapper::SendThemeAreaHeight(int height) {
80 Send(new ChromeViewMsg_SearchBoxThemeAreaHeightChanged(routing_id(), height));
81 }
82
83 void InstantAPIWrapper::SetDisplayInstantResults(bool display_instant_results) {
84 Send(new ChromeViewMsg_SearchBoxSetDisplayInstantResults(
85 routing_id(), display_instant_results));
86 }
87
88 void InstantAPIWrapper::KeyCaptureChanged(bool is_key_capture_enabled) {
89 Send(new ChromeViewMsg_SearchBoxKeyCaptureChanged(
90 routing_id(), is_key_capture_enabled));
91 }
92
93 void InstantAPIWrapper::DidFinishLoad(
94 int64 /* frame_id */,
95 const GURL& /* validated_url */,
96 bool is_main_frame,
97 content::RenderViewHost* /* render_view_host */) {
98 if (is_main_frame)
99 DetermineIfPageSupportsInstant();
100 }
101
102 bool InstantAPIWrapper::OnMessageReceived(const IPC::Message& message) {
103 bool handled = true;
104 IPC_BEGIN_MESSAGE_MAP(InstantAPIWrapper, message)
105 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SetSuggestions, SetSuggestions)
dhollowa 2013/01/14 19:59:39 We should change these handler names to OnSetSugge
samarth 2013/01/22 15:59:06 Done.
106 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_InstantSupportDetermined,
107 InstantSupportDetermined)
108 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ShowInstantPreview,
109 ShowInstantPreview)
110 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_StartCapturingKeyStrokes,
111 StartCapturingKeyStrokes);
112 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_StopCapturingKeyStrokes,
113 StopCapturingKeyStrokes);
114 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SearchBoxNavigate,
115 SearchBoxNavigate);
116 IPC_MESSAGE_UNHANDLED(handled = false)
117 IPC_END_MESSAGE_MAP()
118 return handled;
119 }
120
121 void InstantAPIWrapper::RenderViewGone(base::TerminationStatus status) {
122 if (controller_->OnRenderViewGone())
123 receiver_->InstantPageRenderViewGone(web_contents());
124 }
125
126 void InstantAPIWrapper::DidCommitProvisionalLoadForFrame(
127 int64 frame_id,
128 bool is_main_frame,
129 const GURL& url,
130 content::PageTransition transition_type,
131 content::RenderViewHost* render_view_host) {
132 if (is_main_frame && controller_->OnAboutToNavigateMainFrame())
133 receiver_->InstantPageAboutToNavigateMainFrame(web_contents(), url);
134 }
135
136 void InstantAPIWrapper::SetSuggestions(
137 int page_id,
138 const std::vector<InstantSuggestion>& suggestions) {
139 if (web_contents()->IsActiveEntry(page_id)) {
140 InstantSupportDetermined(page_id, true);
141 if (controller_->OnSetSuggestions())
142 receiver_->SetSuggestions(web_contents(), suggestions);
143 }
144 }
145
146 void InstantAPIWrapper::InstantSupportDetermined(int page_id, bool result) {
147 if (!web_contents()->IsActiveEntry(page_id) ||
148 controller_->supports_instant()) {
149 // Nothing to do if the page already supports instant.
150 return;
151 }
152
153 controller_->set_supports_instant(result);
154 receiver_->InstantSupportDetermined(web_contents(), result);
155
156 if (result) {
Jered 2013/01/14 18:22:34 result -> supports_instant
samarth 2013/01/22 15:59:06 Done.
157 // Inform the renderer process of the Omnibox's font information.
158 // TODO(samarth): this logic doesn't really belong here. Move this to
159 // InstantController.
160 const gfx::Font& omnibox_font =
161 ui::ResourceBundle::GetSharedInstance().GetFont(
162 ui::ResourceBundle::MediumFont);
163 string16 omnibox_font_name = UTF8ToUTF16(omnibox_font.GetFontName());
164 size_t omnibox_font_size = omnibox_font.GetFontSize();
165
166 Send(new ChromeViewMsg_SearchBoxFontInformation(
167 routing_id(), omnibox_font_name, omnibox_font_size));
168 } else {
169 // If the page doesn't support Instant, stop communicating with it.
170 SetContents(NULL);
171 }
172 }
173
174 void InstantAPIWrapper::ShowInstantPreview(int page_id,
175 InstantShownReason reason,
176 int height,
177 InstantSizeUnits units) {
178 if (web_contents()->IsActiveEntry(page_id)) {
179 InstantSupportDetermined(page_id, true);
180 if (controller_->OnShowInstantPreview())
181 receiver_->ShowInstantPreview(web_contents(), reason, height, units);
182 }
183 }
184
185 void InstantAPIWrapper::StartCapturingKeyStrokes(int page_id) {
186 if (web_contents()->IsActiveEntry(page_id)) {
187 InstantSupportDetermined(page_id, true);
188 if (controller_->OnStartCapturingKeyStrokes())
189 receiver_->StartCapturingKeyStrokes(web_contents());
190 }
191 }
192
193 void InstantAPIWrapper::StopCapturingKeyStrokes(int page_id) {
194 if (web_contents()->IsActiveEntry(page_id)) {
195 InstantSupportDetermined(page_id, true);
196 if (controller_->OnStopCapturingKeyStrokes())
197 receiver_->StopCapturingKeyStrokes(web_contents());
198 }
199 }
200
201 void InstantAPIWrapper::SearchBoxNavigate(int page_id,
202 const GURL& url,
203 content::PageTransition transition) {
204 if (web_contents()->IsActiveEntry(page_id)) {
205 InstantSupportDetermined(page_id, true);
206 if (controller_->OnNavigateToURL())
207 receiver_->NavigateToURL(web_contents(), url, transition);
208 }
209 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698