| Index: chrome/browser/ui/search/search_ipc_router.cc
|
| diff --git a/chrome/browser/ui/search/search_ipc_router.cc b/chrome/browser/ui/search/search_ipc_router.cc
|
| index 013e351bb919103fed6d4d04935a4b0705f24890..09b1a72b1fc942cd7e65df60ee8087502b430791 100644
|
| --- a/chrome/browser/ui/search/search_ipc_router.cc
|
| +++ b/chrome/browser/ui/search/search_ipc_router.cc
|
| @@ -8,6 +8,24 @@
|
| #include "chrome/common/render_messages.h"
|
| #include "content/public/browser/web_contents.h"
|
|
|
| +namespace {
|
| +
|
| +bool IsProviderValid(const base::string16& provider) {
|
| + // Only allow string of 8 alphanumeric characters or less as providers.
|
| + // The empty string is considered valid and should be treated as if no
|
| + // provider were specified.
|
| + if (provider.length() > 8)
|
| + return false;
|
| + for (base::string16::const_iterator it = provider.begin();
|
| + it != provider.end(); ++it) {
|
| + if (!IsAsciiAlpha(*it) && !IsAsciiDigit(*it))
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| SearchIPCRouter::SearchIPCRouter(content::WebContents* web_contents,
|
| Delegate* delegate, scoped_ptr<Policy> policy)
|
| : WebContentsObserver(web_contents),
|
| @@ -141,7 +159,10 @@ bool SearchIPCRouter::OnMessageReceived(const IPC::Message& message) {
|
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions,
|
| OnUndoAllMostVisitedDeletions);
|
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_LogEvent, OnLogEvent);
|
| - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_LogImpression, OnLogImpression);
|
| + IPC_MESSAGE_HANDLER(ChromeViewHostMsg_LogMostVisitedImpression,
|
| + OnLogMostVisitedImpression);
|
| + IPC_MESSAGE_HANDLER(ChromeViewHostMsg_LogMostVisitedNavigation,
|
| + OnLogMostVisitedNavigation);
|
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_PasteAndOpenDropdown,
|
| OnPasteAndOpenDropDown);
|
| IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ChromeIdentityCheck,
|
| @@ -245,27 +266,30 @@ void SearchIPCRouter::OnLogEvent(int page_id, NTPLoggingEventType event) const {
|
| delegate_->OnLogEvent(event);
|
| }
|
|
|
| -void SearchIPCRouter::OnLogImpression(int page_id,
|
| - int position,
|
| - const base::string16& provider) const {
|
| - if (!web_contents()->IsActiveEntry(page_id))
|
| +void SearchIPCRouter::OnLogMostVisitedImpression(
|
| + int page_id, int position, const base::string16& provider) const {
|
| + if (!web_contents()->IsActiveEntry(page_id) || !IsProviderValid(provider))
|
| return;
|
|
|
| - // Only allow string of 8 alphanumeric characters or less as providers.
|
| - if (provider.length() > 8)
|
| + delegate_->OnInstantSupportDetermined(true);
|
| + // Logging impressions is controlled by the same policy as logging events.
|
| + if (!policy_->ShouldProcessLogEvent())
|
| + return;
|
| +
|
| + delegate_->OnLogMostVisitedImpression(position, provider);
|
| +}
|
| +
|
| +void SearchIPCRouter::OnLogMostVisitedNavigation(
|
| + int page_id, int position, const base::string16& provider) const {
|
| + if (!web_contents()->IsActiveEntry(page_id) || !IsProviderValid(provider))
|
| return;
|
| - for (base::string16::const_iterator it = provider.begin();
|
| - it != provider.end(); ++it) {
|
| - if (!IsAsciiAlpha(*it) && !IsAsciiDigit(*it))
|
| - return;
|
| - }
|
|
|
| delegate_->OnInstantSupportDetermined(true);
|
| - // Logging impressions is controlled by the same policy as logging events.
|
| + // Logging navigations is controlled by the same policy as logging events.
|
| if (!policy_->ShouldProcessLogEvent())
|
| return;
|
|
|
| - delegate_->OnLogImpression(position, provider);
|
| + delegate_->OnLogMostVisitedNavigation(position, provider);
|
| }
|
|
|
| void SearchIPCRouter::OnPasteAndOpenDropDown(int page_id,
|
|
|