summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/renderer/render_view.cc66
-rw-r--r--chrome/renderer/render_view.h25
-rw-r--r--chrome/renderer/search_extension.cc3
-rw-r--r--chrome/renderer/searchbox.cc93
-rw-r--r--chrome/renderer/searchbox.h49
-rw-r--r--chrome/renderer/searchbox_extension.cc22
6 files changed, 146 insertions, 112 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 1057dfd..4501baf 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -87,7 +87,7 @@
#include "chrome/renderer/renderer_webapplicationcachehost_impl.h"
#include "chrome/renderer/renderer_webstoragenamespace_impl.h"
#include "chrome/renderer/safe_browsing/phishing_classifier_delegate.h"
-#include "chrome/renderer/searchbox_extension.h"
+#include "chrome/renderer/searchbox.h"
#include "chrome/renderer/speech_input_dispatcher.h"
#include "chrome/renderer/spellchecker/spellcheck.h"
#include "chrome/renderer/translate_helper.h"
@@ -578,6 +578,7 @@ RenderView::RenderView(RenderThreadBase* render_thread,
speech_input_dispatcher_(NULL),
device_orientation_dispatcher_(NULL),
print_helper_(NULL),
+ searchbox_(NULL),
accessibility_ack_pending_(false),
pending_app_icon_requests_(0),
session_storage_namespace_id_(session_storage_namespace_id) {
@@ -651,6 +652,7 @@ RenderView::RenderView(RenderThreadBase* render_thread,
page_click_tracker->AddListener(autofill_agent);
new TranslateHelper(this);
print_helper_ = new PrintWebViewHelper(this);
+ searchbox_ = new SearchBox(this);
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableClientSidePhishingDetection)) {
@@ -1056,12 +1058,6 @@ bool RenderView::OnMessageReceived(const IPC::Message& message) {
IPC_MESSAGE_HANDLER(ViewMsg_SetBackground, OnSetBackground)
IPC_MESSAGE_HANDLER(ViewMsg_EnablePreferredSizeChangedMode,
OnEnablePreferredSizeChangedMode)
- IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxChange, OnSearchBoxChange)
- IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxSubmit, OnSearchBoxSubmit)
- IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxCancel, OnSearchBoxCancel)
- IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxResize, OnSearchBoxResize)
- IPC_MESSAGE_HANDLER(ViewMsg_DetermineIfPageSupportsInstant,
- OnDetermineIfPageSupportsInstant)
IPC_MESSAGE_HANDLER(ViewMsg_DisableScrollbarsForSmallWindows,
OnDisableScrollbarsForSmallWindows)
IPC_MESSAGE_HANDLER(ViewMsg_SetRendererPrefs, OnSetRendererPrefs)
@@ -4533,11 +4529,6 @@ WebNode RenderView::GetFocusedNode() const {
return WebNode();
}
-void RenderView::SetSuggestions(const std::vector<std::string>& suggestions) {
- // Explicitly allow empty vector to be sent to the browser.
- Send(new ViewHostMsg_SetSuggestions(routing_id_, page_id_, suggestions));
-}
-
void RenderView::EvaluateScript(const string16& frame_xpath,
const string16& script,
int id,
@@ -4771,57 +4762,6 @@ void RenderView::OnEnablePreferredSizeChangedMode(int flags) {
}
}
-void RenderView::OnSearchBoxChange(const string16& value,
- bool verbatim,
- int selection_start,
- int selection_end) {
- search_box_.value = value;
- search_box_.verbatim = verbatim;
- search_box_.selection_start = selection_start;
- search_box_.selection_end = selection_end;
- if (!webview() || !webview()->mainFrame())
- return;
- extensions_v8::SearchBoxExtension::DispatchChange(webview()->mainFrame());
-}
-
-void RenderView::OnSearchBoxSubmit(const string16& value, bool verbatim) {
- search_box_.value = value;
- search_box_.verbatim = verbatim;
- if (!webview() || !webview()->mainFrame())
- return;
- extensions_v8::SearchBoxExtension::DispatchSubmit(webview()->mainFrame());
-}
-
-void RenderView::OnSearchBoxCancel() {
- search_box_.verbatim = false;
- if (!webview() || !webview()->mainFrame())
- return;
- extensions_v8::SearchBoxExtension::DispatchCancel(webview()->mainFrame());
-}
-
-void RenderView::OnSearchBoxResize(const gfx::Rect& bounds) {
- search_box_.x = bounds.x();
- search_box_.y = bounds.y();
- search_box_.width = bounds.width();
- search_box_.height = bounds.height();
- if (!webview() || !webview()->mainFrame())
- return;
- extensions_v8::SearchBoxExtension::DispatchResize(webview()->mainFrame());
-}
-
-void RenderView::OnDetermineIfPageSupportsInstant(const string16& value,
- bool verbatim,
- int selection_start,
- int selection_end) {
- search_box_.value = value;
- search_box_.verbatim = verbatim;
- search_box_.selection_start = selection_start;
- search_box_.selection_end = selection_end;
- bool result = extensions_v8::SearchBoxExtension::PageSupportsInstant(
- webview()->mainFrame());
- Send(new ViewHostMsg_InstantSupportDetermined(routing_id_, page_id_, result));
-}
-
void RenderView::OnDisableScrollbarsForSmallWindows(
const gfx::Size& disable_scrollbar_size_limit) {
disable_scrollbars_size_limit_ = disable_scrollbar_size_limit;
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index 8cc4e79..7cbd422 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -32,7 +32,6 @@
#include "chrome/renderer/pepper_plugin_delegate_impl.h"
#include "chrome/renderer/render_widget.h"
#include "chrome/renderer/renderer_webcookiejar_impl.h"
-#include "chrome/renderer/searchbox.h"
#include "ipc/ipc_platform_file.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityNotification.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h"
@@ -75,6 +74,7 @@ class PepperDeviceTest;
class PrintWebViewHelper;
class RenderViewObserver;
class RenderViewVisitor;
+class SearchBox;
class SkBitmap;
class SpeechInputDispatcher;
class WebPluginDelegatePepper;
@@ -242,9 +242,7 @@ class RenderView : public RenderWidget,
disable_scrollbars_size_limit_.height() <= height));
}
- const SearchBox& searchbox() const {
- return search_box_;
- }
+ SearchBox* searchbox() const { return searchbox_; }
const WebKit::WebNode& context_menu_node() { return context_menu_node_; }
@@ -262,9 +260,6 @@ class RenderView : public RenderWidget,
GetSearchProviderInstallState(WebKit::WebFrame* frame,
const std::string& url);
- // Sends ViewHostMsg_SetSuggestions to the browser.
- void SetSuggestions(const std::vector<std::string>& suggestions);
-
// Evaluates a string of JavaScript in a particular frame.
void EvaluateScript(const string16& frame_xpath,
const string16& jscript,
@@ -849,17 +844,6 @@ class RenderView : public RenderWidget,
const gfx::Point& screen_pt,
WebKit::WebDragOperationsMask operations_allowed);
void OnEnablePreferredSizeChangedMode(int flags);
- void OnSearchBoxChange(const string16& value,
- bool verbatim,
- int selection_start,
- int selection_end);
- void OnSearchBoxSubmit(const string16& value, bool verbatim);
- void OnSearchBoxCancel();
- void OnSearchBoxResize(const gfx::Rect& bounds);
- void OnDetermineIfPageSupportsInstant(const string16& value,
- bool verbatim,
- int selection_start,
- int selection_end);
void OnEnableViewSourceMode();
void OnExecuteCode(const ViewMsg_ExecuteCode_Params& params);
void OnExecuteEditCommand(const std::string& name, const std::string& value);
@@ -1264,8 +1248,6 @@ class RenderView : public RenderWidget,
// The text selection the last time DidChangeSelection got called.
std::string last_selection_;
- SearchBox search_box_;
-
// View ----------------------------------------------------------------------
// Type of view attached with RenderView. See view_types.h
@@ -1342,6 +1324,9 @@ class RenderView : public RenderWidget,
// RenderViewObserver interface.
PrintWebViewHelper* print_helper_;
+ // Weak pointer since it implements RenderViewObserver interface.
+ SearchBox* searchbox_;
+
scoped_refptr<AudioMessageFilter> audio_message_filter_;
// Handles accessibility requests into the renderer side, as well as
diff --git a/chrome/renderer/search_extension.cc b/chrome/renderer/search_extension.cc
index 2d4ab33..ee71cf6 100644
--- a/chrome/renderer/search_extension.cc
+++ b/chrome/renderer/search_extension.cc
@@ -10,6 +10,7 @@
#include "base/command_line.h"
#include "chrome/common/render_messages_params.h"
#include "chrome/renderer/render_view.h"
+#include "chrome/renderer/searchbox.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "v8/include/v8.h"
@@ -82,7 +83,7 @@ v8::Handle<v8::Value> SearchExtensionWrapper::SetSuggestResult(
std::vector<std::string> suggestions;
suggestions.push_back(std::string(*v8::String::Utf8Value(args[0])));
- render_view->SetSuggestions(suggestions);
+ render_view->searchbox()->SetSuggestions(suggestions);
return v8::Undefined();
}
diff --git a/chrome/renderer/searchbox.cc b/chrome/renderer/searchbox.cc
index 6766f25..c8aac0f 100644
--- a/chrome/renderer/searchbox.cc
+++ b/chrome/renderer/searchbox.cc
@@ -4,15 +4,92 @@
#include "chrome/renderer/searchbox.h"
-SearchBox::SearchBox()
- : verbatim(false),
- selection_start(0),
- selection_end(0),
- x(0),
- y(0),
- width(0),
- height(0) {
+#include "chrome/common/render_messages.h"
+#include "chrome/renderer/render_view.h"
+#include "chrome/renderer/searchbox_extension.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
+
+using WebKit::WebView;
+
+SearchBox::SearchBox(RenderView* render_view)
+ : RenderViewObserver(render_view),
+ verbatim_(false),
+ selection_start_(0),
+ selection_end_(0) {
}
SearchBox::~SearchBox() {
}
+
+void SearchBox::SetSuggestions(const std::vector<std::string>& suggestions) {
+ // Explicitly allow empty vector to be sent to the browser.
+ render_view()->Send(new ViewHostMsg_SetSuggestions(
+ render_view()->routing_id(), render_view()->page_id(), suggestions));
+}
+
+bool SearchBox::OnMessageReceived(const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(SearchBox, message)
+ IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxChange, OnChange)
+ IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxSubmit, OnSubmit)
+ IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxCancel, OnCancel)
+ IPC_MESSAGE_HANDLER(ViewMsg_SearchBoxResize, OnResize)
+ IPC_MESSAGE_HANDLER(ViewMsg_DetermineIfPageSupportsInstant,
+ OnDetermineIfPageSupportsInstant)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void SearchBox::OnChange(const string16& value,
+ bool verbatim,
+ int selection_start,
+ int selection_end) {
+ value_ = value;
+ verbatim_ = verbatim;
+ selection_start_ = selection_start;
+ selection_end_ = selection_end;
+ if (!render_view()->webview() || !render_view()->webview()->mainFrame())
+ return;
+ extensions_v8::SearchBoxExtension::DispatchChange(
+ render_view()->webview()->mainFrame());
+}
+
+void SearchBox::OnSubmit(const string16& value, bool verbatim) {
+ value_ = value;
+ verbatim_ = verbatim;
+ if (!render_view()->webview() || !render_view()->webview()->mainFrame())
+ return;
+ extensions_v8::SearchBoxExtension::DispatchSubmit(
+ render_view()->webview()->mainFrame());
+}
+
+void SearchBox::OnCancel() {
+ verbatim_ = false;
+ if (!render_view()->webview() || !render_view()->webview()->mainFrame())
+ return;
+ extensions_v8::SearchBoxExtension::DispatchCancel(
+ render_view()->webview()->mainFrame());
+}
+
+void SearchBox::OnResize(const gfx::Rect& bounds) {
+ rect_ = bounds;
+ if (!render_view()->webview() || !render_view()->webview()->mainFrame())
+ return;
+ extensions_v8::SearchBoxExtension::DispatchResize(
+ render_view()->webview()->mainFrame());
+}
+
+void SearchBox::OnDetermineIfPageSupportsInstant(const string16& value,
+ bool verbatim,
+ int selection_start,
+ int selection_end) {
+ value_ = value;
+ verbatim_ = verbatim;
+ selection_start_ = selection_start;
+ selection_end_ = selection_end;
+ bool result = extensions_v8::SearchBoxExtension::PageSupportsInstant(
+ render_view()->webview()->mainFrame());
+ render_view()->Send(new ViewHostMsg_InstantSupportDetermined(
+ render_view()->routing_id(), render_view()->page_id(), result));
+}
diff --git a/chrome/renderer/searchbox.h b/chrome/renderer/searchbox.h
index d09c73a..f2fd164 100644
--- a/chrome/renderer/searchbox.h
+++ b/chrome/renderer/searchbox.h
@@ -6,20 +6,49 @@
#define CHROME_RENDERER_SEARCHBOX_H_
#pragma once
+#include <vector>
+
#include "base/string16.h"
+#include "chrome/renderer/render_view_observer.h"
+#include "ui/gfx/rect.h"
-struct SearchBox {
- SearchBox();
+class SearchBox : public RenderViewObserver {
+ public:
+ explicit SearchBox(RenderView* render_view);
~SearchBox();
- string16 value;
- bool verbatim;
- uint32 selection_start;
- uint32 selection_end;
- uint32 x;
- uint32 y;
- uint32 width;
- uint32 height;
+ // Sends ViewHostMsg_SetSuggestions to the browser.
+ void SetSuggestions(const std::vector<std::string>& suggestions);
+
+ const string16& value() { return value_; }
+ bool verbatim() { return verbatim_; }
+ uint32 selection_start() { return selection_start_; }
+ uint32 selection_end() { return selection_end_; }
+ const gfx::Rect& rect() { return rect_; }
+
+ private:
+ // RenderViewObserver implementation.
+ virtual bool OnMessageReceived(const IPC::Message& message);
+
+ void OnChange(const string16& value,
+ bool verbatim,
+ int selection_start,
+ int selection_end);
+ void OnSubmit(const string16& value, bool verbatim);
+ void OnCancel();
+ void OnResize(const gfx::Rect& bounds);
+ void OnDetermineIfPageSupportsInstant(const string16& value,
+ bool verbatim,
+ int selection_start,
+ int selection_end);
+
+ string16 value_;
+ bool verbatim_;
+ uint32 selection_start_;
+ uint32 selection_end_;
+ gfx::Rect rect_;
+
+ DISALLOW_COPY_AND_ASSIGN(SearchBox);
};
#endif // CHROME_RENDERER_SEARCHBOX_H_
diff --git a/chrome/renderer/searchbox_extension.cc b/chrome/renderer/searchbox_extension.cc
index 9be60bd..36fc94c 100644
--- a/chrome/renderer/searchbox_extension.cc
+++ b/chrome/renderer/searchbox_extension.cc
@@ -12,6 +12,7 @@
#include "base/stringprintf.h"
#include "chrome/common/render_messages_params.h"
#include "chrome/renderer/render_view.h"
+#include "chrome/renderer/searchbox.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h"
@@ -215,8 +216,9 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetValue(
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
return v8::String::New(
- reinterpret_cast<const uint16_t*>(render_view->searchbox().value.c_str()),
- render_view->searchbox().value.length());
+ reinterpret_cast<const uint16_t*>(
+ render_view->searchbox()->value().c_str()),
+ render_view->searchbox()->value().length());
}
// static
@@ -224,7 +226,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetVerbatim(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Boolean::New(render_view->searchbox().verbatim);
+ return v8::Boolean::New(render_view->searchbox()->verbatim());
}
// static
@@ -232,7 +234,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionStart(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(render_view->searchbox().selection_start);
+ return v8::Int32::New(render_view->searchbox()->selection_start());
}
// static
@@ -240,7 +242,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetSelectionEnd(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(render_view->searchbox().selection_end);
+ return v8::Int32::New(render_view->searchbox()->selection_end());
}
// static
@@ -248,7 +250,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetX(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(render_view->searchbox().x);
+ return v8::Int32::New(render_view->searchbox()->rect().x());
}
// static
@@ -256,7 +258,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetY(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(render_view->searchbox().y);
+ return v8::Int32::New(render_view->searchbox()->rect().y());
}
// static
@@ -264,7 +266,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetWidth(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(render_view->searchbox().width);
+ return v8::Int32::New(render_view->searchbox()->rect().width());
}
// static
@@ -272,7 +274,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::GetHeight(
const v8::Arguments& args) {
RenderView* render_view = GetRenderView();
if (!render_view) return v8::Undefined();
- return v8::Int32::New(render_view->searchbox().height);
+ return v8::Int32::New(render_view->searchbox()->rect().height());
}
// Accepts a single argument in form:
@@ -330,7 +332,7 @@ v8::Handle<v8::Value> SearchBoxExtensionWrapper::SetSuggestions(
}
if (RenderView* render_view = GetRenderView())
- render_view->SetSuggestions(suggestions);
+ render_view->searchbox()->SetSuggestions(suggestions);
return v8::Undefined();
}