• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 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 "content/renderer/renderer_webapplicationcachehost_impl.h"
6 
7 #include "content/common/view_messages.h"
8 #include "content/renderer/render_thread_impl.h"
9 #include "content/renderer/render_view_impl.h"
10 #include "third_party/WebKit/public/web/WebFrame.h"
11 #include "third_party/WebKit/public/web/WebView.h"
12 
13 using blink::WebApplicationCacheHostClient;
14 using blink::WebConsoleMessage;
15 
16 namespace content {
17 
RendererWebApplicationCacheHostImpl(RenderViewImpl * render_view,WebApplicationCacheHostClient * client,AppCacheBackend * backend)18 RendererWebApplicationCacheHostImpl::RendererWebApplicationCacheHostImpl(
19     RenderViewImpl* render_view,
20     WebApplicationCacheHostClient* client,
21     AppCacheBackend* backend)
22     : WebApplicationCacheHostImpl(client, backend),
23       routing_id_(render_view->routing_id()) {
24 }
25 
OnLogMessage(AppCacheLogLevel log_level,const std::string & message)26 void RendererWebApplicationCacheHostImpl::OnLogMessage(
27     AppCacheLogLevel log_level, const std::string& message) {
28   if (RenderThreadImpl::current()->layout_test_mode())
29     return;
30 
31   RenderViewImpl* render_view = GetRenderView();
32   if (!render_view || !render_view->webview() ||
33       !render_view->webview()->mainFrame())
34     return;
35 
36   blink::WebFrame* frame = render_view->webview()->mainFrame();
37   frame->addMessageToConsole(WebConsoleMessage(
38         static_cast<WebConsoleMessage::Level>(log_level),
39         blink::WebString::fromUTF8(message.c_str())));
40 }
41 
OnContentBlocked(const GURL & manifest_url)42 void RendererWebApplicationCacheHostImpl::OnContentBlocked(
43     const GURL& manifest_url) {
44   RenderThreadImpl::current()->Send(new ViewHostMsg_AppCacheAccessed(
45       routing_id_, manifest_url, true));
46 }
47 
OnCacheSelected(const AppCacheInfo & info)48 void RendererWebApplicationCacheHostImpl::OnCacheSelected(
49     const AppCacheInfo& info) {
50   if (!info.manifest_url.is_empty()) {
51     RenderThreadImpl::current()->Send(new ViewHostMsg_AppCacheAccessed(
52         routing_id_, info.manifest_url, false));
53   }
54   WebApplicationCacheHostImpl::OnCacheSelected(info);
55 }
56 
GetRenderView()57 RenderViewImpl* RendererWebApplicationCacheHostImpl::GetRenderView() {
58   return RenderViewImpl::FromRoutingID(routing_id_);
59 }
60 
61 }  // namespace content
62