// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "content/renderer/renderer_webapplicationcachehost_impl.h" #include "content/common/view_messages.h" #include "content/renderer/render_thread_impl.h" #include "content/renderer/render_view_impl.h" #include "third_party/WebKit/public/web/WebFrame.h" #include "third_party/WebKit/public/web/WebLocalFrame.h" #include "third_party/WebKit/public/web/WebView.h" using blink::WebApplicationCacheHostClient; using blink::WebConsoleMessage; namespace content { RendererWebApplicationCacheHostImpl::RendererWebApplicationCacheHostImpl( RenderViewImpl* render_view, WebApplicationCacheHostClient* client, AppCacheBackend* backend, int appcache_host_id) : WebApplicationCacheHostImpl(client, backend, appcache_host_id), routing_id_(render_view->GetRoutingID()) {} void RendererWebApplicationCacheHostImpl::OnLogMessage( AppCacheLogLevel log_level, const std::string& message) { if (RenderThreadImpl::current()->layout_test_mode()) return; RenderViewImpl* render_view = GetRenderView(); if (!render_view || !render_view->webview() || !render_view->webview()->MainFrame()) return; blink::WebFrame* frame = render_view->webview()->MainFrame(); if (!frame->IsWebLocalFrame()) return; // TODO(michaeln): Make app cache host per-frame and correctly report to the // involved frame. frame->ToWebLocalFrame()->AddMessageToConsole( WebConsoleMessage(static_cast(log_level), blink::WebString::FromUTF8(message.c_str()))); } void RendererWebApplicationCacheHostImpl::OnContentBlocked( const GURL& manifest_url) { RenderThreadImpl::current()->Send(new ViewHostMsg_AppCacheAccessed( routing_id_, manifest_url, true)); } void RendererWebApplicationCacheHostImpl::OnCacheSelected( const AppCacheInfo& info) { if (!info.manifest_url.is_empty()) { RenderThreadImpl::current()->Send(new ViewHostMsg_AppCacheAccessed( routing_id_, info.manifest_url, false)); } WebApplicationCacheHostImpl::OnCacheSelected(info); } RenderViewImpl* RendererWebApplicationCacheHostImpl::GetRenderView() { return RenderViewImpl::FromRoutingID(routing_id_); } } // namespace content