| Index: chrome/browser/renderer_host/render_view_host.cc
 | 
| ===================================================================
 | 
| --- chrome/browser/renderer_host/render_view_host.cc	(revision 70223)
 | 
| +++ chrome/browser/renderer_host/render_view_host.cc	(working copy)
 | 
| @@ -11,7 +11,6 @@
 | 
|  #include "base/command_line.h"
 | 
|  #include "base/i18n/rtl.h"
 | 
|  #include "base/json/json_reader.h"
 | 
| -#include "base/metrics/stats_counters.h"
 | 
|  #include "base/string_util.h"
 | 
|  #include "base/time.h"
 | 
|  #include "base/utf_string_conversions.h"
 | 
| @@ -81,25 +80,6 @@
 | 
|  
 | 
|  namespace {
 | 
|  
 | 
| -void FilterURL(ChildProcessSecurityPolicy* policy, int renderer_id, GURL* url) {
 | 
| -  if (!url->is_valid())
 | 
| -    return;  // We don't need to block invalid URLs.
 | 
| -
 | 
| -  if (url->SchemeIs(chrome::kAboutScheme)) {
 | 
| -    // The renderer treats all URLs in the about: scheme as being about:blank.
 | 
| -    // Canonicalize about: URLs to about:blank.
 | 
| -    *url = GURL(chrome::kAboutBlankURL);
 | 
| -  }
 | 
| -
 | 
| -  if (!policy->CanRequestURL(renderer_id, *url)) {
 | 
| -    // If this renderer is not permitted to request this URL, we invalidate the
 | 
| -    // URL.  This prevents us from storing the blocked URL and becoming confused
 | 
| -    // later.
 | 
| -    VLOG(1) << "Blocked URL " << url->spec();
 | 
| -    *url = GURL();
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  // Delay to wait on closing the tab for a beforeunload/unload handler to fire.
 | 
|  const int kUnloadTimeoutMS = 1000;
 | 
|  
 | 
| @@ -760,6 +740,9 @@
 | 
|    }
 | 
|  #endif
 | 
|  
 | 
| +  if (delegate_->OnMessageReceived(msg))
 | 
| +    return true;
 | 
| +
 | 
|    bool handled = true;
 | 
|    bool msg_is_ok = true;
 | 
|    IPC_BEGIN_MESSAGE_MAP_EX(RenderViewHost, msg, msg_is_ok)
 | 
| @@ -778,7 +761,7 @@
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_Thumbnail, OnMsgThumbnail)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_Snapshot, OnMsgScreenshot)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_UpdateInspectorSetting,
 | 
| -                        OnUpdateInspectorSetting);
 | 
| +                        OnUpdateInspectorSetting)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_Close, OnMsgClose)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_RequestMove, OnMsgRequestMove)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartLoading, OnMsgDidStartLoading)
 | 
| @@ -789,18 +772,6 @@
 | 
|                          OnMsgDocumentAvailableInMainFrame)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentOnLoadCompletedInMainFrame,
 | 
|                          OnMsgDocumentOnLoadCompletedInMainFrame)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidLoadResourceFromMemoryCache,
 | 
| -                        OnMsgDidLoadResourceFromMemoryCache)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidDisplayInsecureContent,
 | 
| -                        OnMsgDidDisplayInsecureContent)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidRunInsecureContent,
 | 
| -                        OnMsgDidRunInsecureContent)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidRedirectProvisionalLoad,
 | 
| -                        OnMsgDidRedirectProvisionalLoad)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidStartProvisionalLoadForFrame,
 | 
| -                        OnMsgDidStartProvisionalLoadForFrame)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidFailProvisionalLoadWithError,
 | 
| -                        OnMsgDidFailProvisionalLoadWithError)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_Find_Reply, OnMsgFindReply)
 | 
|      IPC_MESSAGE_HANDLER(ViewMsg_ExecuteCodeFinished,
 | 
|                          OnExecuteCodeFinished)
 | 
| @@ -812,16 +783,10 @@
 | 
|                          OnMsgDidContentsPreferredSizeChange)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DomOperationResponse,
 | 
|                          OnMsgDomOperationResponse)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DOMUISend,
 | 
| -                        OnMsgDOMUISend)
 | 
| +    IPC_MESSAGE_HANDLER(ViewHostMsg_DOMUISend, OnMsgDOMUISend)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardMessageToExternalHost,
 | 
|                          OnMsgForwardMessageToExternalHost)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DocumentLoadedInFrame,
 | 
| -                        OnMsgDocumentLoadedInFrame)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_DidFinishLoad,
 | 
| -                        OnMsgDidFinishLoad)
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset,
 | 
| -                        OnMsgGoToEntryAtOffset)
 | 
| +    IPC_MESSAGE_HANDLER(ViewHostMsg_GoToEntryAtOffset, OnMsgGoToEntryAtOffset)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_SetTooltipText, OnMsgSetTooltipText)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_RunFileChooser, OnMsgRunFileChooser)
 | 
|      IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_RunJavaScriptMessage,
 | 
| @@ -844,34 +809,34 @@
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DidPrintPage, DidPrintPage)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_AddMessageToConsole, OnAddMessageToConsole)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToDevToolsAgent,
 | 
| -                        OnForwardToDevToolsAgent);
 | 
| +                        OnForwardToDevToolsAgent)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_ForwardToDevToolsClient,
 | 
| -                        OnForwardToDevToolsClient);
 | 
| +                        OnForwardToDevToolsClient)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_ActivateDevToolsWindow,
 | 
| -                        OnActivateDevToolsWindow);
 | 
| +                        OnActivateDevToolsWindow)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_CloseDevToolsWindow,
 | 
| -                        OnCloseDevToolsWindow);
 | 
| +                        OnCloseDevToolsWindow)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_RequestDockDevToolsWindow,
 | 
| -                        OnRequestDockDevToolsWindow);
 | 
| +                        OnRequestDockDevToolsWindow)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_RequestUndockDevToolsWindow,
 | 
| -                        OnRequestUndockDevToolsWindow);
 | 
| +                        OnRequestUndockDevToolsWindow)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DevToolsRuntimePropertyChanged,
 | 
| -                        OnDevToolsRuntimePropertyChanged);
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_MissingPluginStatus, OnMissingPluginStatus);
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_CrashedPlugin, OnCrashedPlugin);
 | 
| +                        OnDevToolsRuntimePropertyChanged)
 | 
| +    IPC_MESSAGE_HANDLER(ViewHostMsg_MissingPluginStatus, OnMissingPluginStatus)
 | 
| +    IPC_MESSAGE_HANDLER(ViewHostMsg_CrashedPlugin, OnCrashedPlugin)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_BlockedOutdatedPlugin,
 | 
| -                        OnBlockedOutdatedPlugin);
 | 
| +                        OnBlockedOutdatedPlugin)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_SendCurrentPageAllSavableResourceLinks,
 | 
| -                        OnReceivedSavableResourceLinksForCurrentPage);
 | 
| +                        OnReceivedSavableResourceLinksForCurrentPage)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_SendSerializedHtmlData,
 | 
| -                        OnReceivedSerializedHtmlData);
 | 
| +                        OnReceivedSerializedHtmlData)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DidGetApplicationInfo,
 | 
| -                        OnDidGetApplicationInfo);
 | 
| +                        OnDidGetApplicationInfo)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_InstallApplication,
 | 
| -                        OnInstallApplication);
 | 
| +                        OnInstallApplication)
 | 
|      IPC_MESSAGE_FORWARD(ViewHostMsg_JSOutOfMemory, delegate_,
 | 
| -                        RenderViewHostDelegate::OnJSOutOfMemory);
 | 
| -    IPC_MESSAGE_HANDLER(ViewHostMsg_ShouldClose_ACK, OnMsgShouldCloseACK);
 | 
| +                        RenderViewHostDelegate::OnJSOutOfMemory)
 | 
| +    IPC_MESSAGE_HANDLER(ViewHostMsg_ShouldClose_ACK, OnMsgShouldCloseACK)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_QueryFormFieldAutoFill,
 | 
|                          OnQueryFormFieldAutoFill)
 | 
|      IPC_MESSAGE_HANDLER(ViewHostMsg_DidShowAutoFillSuggestions,
 | 
| @@ -1155,17 +1120,6 @@
 | 
|    Send(new ViewMsg_Move_ACK(routing_id()));
 | 
|  }
 | 
|  
 | 
| -void RenderViewHost::OnMsgDidRedirectProvisionalLoad(int32 page_id,
 | 
| -                                                     const GURL& source_url,
 | 
| -                                                     const GURL& target_url) {
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate) {
 | 
| -    resource_delegate->DidRedirectProvisionalLoad(page_id,
 | 
| -                                                  source_url, target_url);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  void RenderViewHost::OnMsgDidStartLoading() {
 | 
|    delegate_->DidStartLoading();
 | 
|  }
 | 
| @@ -1186,77 +1140,6 @@
 | 
|    delegate_->DocumentOnLoadCompletedInMainFrame(this, page_id);
 | 
|  }
 | 
|  
 | 
| -void RenderViewHost::OnMsgDidLoadResourceFromMemoryCache(
 | 
| -    const GURL& url,
 | 
| -    const std::string& frame_origin,
 | 
| -    const std::string& main_frame_origin,
 | 
| -    const std::string& security_info) {
 | 
| -  static base::StatsCounter cache("WebKit.CacheHit");
 | 
| -  cache.Increment();
 | 
| -
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate) {
 | 
| -    resource_delegate->DidLoadResourceFromMemoryCache(
 | 
| -        url, frame_origin, main_frame_origin, security_info);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void RenderViewHost::OnMsgDidDisplayInsecureContent() {
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate)
 | 
| -    resource_delegate->DidDisplayInsecureContent();
 | 
| -}
 | 
| -
 | 
| -void RenderViewHost::OnMsgDidRunInsecureContent(
 | 
| -    const std::string& security_origin) {
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate)
 | 
| -    resource_delegate->DidRunInsecureContent(security_origin);
 | 
| -}
 | 
| -
 | 
| -void RenderViewHost::OnMsgDidStartProvisionalLoadForFrame(int64 frame_id,
 | 
| -                                                          bool is_main_frame,
 | 
| -                                                          const GURL& url) {
 | 
| -  bool is_error_page = (url.spec() == chrome::kUnreachableWebDataURL);
 | 
| -  GURL validated_url(url);
 | 
| -  FilterURL(ChildProcessSecurityPolicy::GetInstance(),
 | 
| -            process()->id(), &validated_url);
 | 
| -
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate) {
 | 
| -    resource_delegate->DidStartProvisionalLoadForFrame(
 | 
| -        this, frame_id, is_main_frame, is_error_page, validated_url);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void RenderViewHost::OnMsgDidFailProvisionalLoadWithError(
 | 
| -    int64 frame_id,
 | 
| -    bool is_main_frame,
 | 
| -    int error_code,
 | 
| -    const GURL& url,
 | 
| -    bool showing_repost_interstitial) {
 | 
| -  VLOG(1) << "Failed Provisional Load: " << url.possibly_invalid_spec()
 | 
| -          << ", error_code: " << error_code
 | 
| -          << " is_main_frame: " << is_main_frame
 | 
| -          << " showing_repost_interstitial: " << showing_repost_interstitial
 | 
| -          << " frame_id: " << frame_id;
 | 
| -  GURL validated_url(url);
 | 
| -  FilterURL(ChildProcessSecurityPolicy::GetInstance(),
 | 
| -            process()->id(), &validated_url);
 | 
| -
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate) {
 | 
| -    resource_delegate->DidFailProvisionalLoadWithError(
 | 
| -        this, frame_id, is_main_frame, error_code, validated_url,
 | 
| -        showing_repost_interstitial);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
|  void RenderViewHost::OnMsgFindReply(int request_id,
 | 
|                                      int number_of_matches,
 | 
|                                      const gfx::Rect& selection_rect,
 | 
| @@ -1396,20 +1279,6 @@
 | 
|    delegate_->ProcessExternalHostMessage(message, origin, target);
 | 
|  }
 | 
|  
 | 
| -void RenderViewHost::OnMsgDocumentLoadedInFrame(int64 frame_id) {
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate)
 | 
| -    resource_delegate->DocumentLoadedInFrame(frame_id);
 | 
| -}
 | 
| -
 | 
| -void RenderViewHost::OnMsgDidFinishLoad(int64 frame_id) {
 | 
| -  RenderViewHostDelegate::Resource* resource_delegate =
 | 
| -      delegate_->GetResourceDelegate();
 | 
| -  if (resource_delegate)
 | 
| -    resource_delegate->DidFinishLoad(frame_id);
 | 
| -}
 | 
| -
 | 
|  void RenderViewHost::DisassociateFromPopupCount() {
 | 
|    Send(new ViewMsg_DisassociateFromPopupCount(routing_id()));
 | 
|  }
 | 
| @@ -2093,6 +1962,27 @@
 | 
|                                                    verbatim));
 | 
|  }
 | 
|  
 | 
| +void RenderViewHost::FilterURL(ChildProcessSecurityPolicy* policy,
 | 
| +                               int renderer_id,
 | 
| +                               GURL* url) {
 | 
| +  if (!url->is_valid())
 | 
| +    return;  // We don't need to block invalid URLs.
 | 
| +
 | 
| +  if (url->SchemeIs(chrome::kAboutScheme)) {
 | 
| +    // The renderer treats all URLs in the about: scheme as being about:blank.
 | 
| +    // Canonicalize about: URLs to about:blank.
 | 
| +    *url = GURL(chrome::kAboutBlankURL);
 | 
| +  }
 | 
| +
 | 
| +  if (!policy->CanRequestURL(renderer_id, *url)) {
 | 
| +    // If this renderer is not permitted to request this URL, we invalidate the
 | 
| +    // URL.  This prevents us from storing the blocked URL and becoming confused
 | 
| +    // later.
 | 
| +    VLOG(1) << "Blocked URL " << url->spec();
 | 
| +    *url = GURL();
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  void RenderViewHost::OnExtensionPostMessage(
 | 
|      int port_id, const std::string& message) {
 | 
|    if (process()->profile()->GetExtensionMessageService()) {
 | 
| 
 |