| // Copyright (c) 2011 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. |
| |
| #ifndef CONTENT_RENDERER_CONTENT_RENDERER_CLIENT_H_ |
| #define CONTENT_RENDERER_CONTENT_RENDERER_CLIENT_H_ |
| #pragma once |
| |
| #include <string> |
| |
| #include "base/string16.h" |
| #include "content/common/content_client.h" |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebPageVisibilityState.h" |
| |
| class FilePath; |
| class GURL; |
| class RenderView; |
| class SkBitmap; |
| |
| namespace WebKit { |
| class WebFrame; |
| class WebPlugin; |
| class WebURLRequest; |
| struct WebPluginParams; |
| struct WebURLError; |
| } |
| |
| namespace v8 { |
| class Context; |
| template<class T> class Handle; |
| } |
| |
| namespace content { |
| |
| // Embedder API for participating in renderer logic. |
| class ContentRendererClient { |
| public: |
| virtual ~ContentRendererClient() {} |
| |
| // Notifies us that the RenderThread has been created. |
| virtual void RenderThreadStarted() = 0; |
| |
| // Notifies that a new RenderView has been created. |
| virtual void RenderViewCreated(RenderView* render_view) = 0; |
| |
| // Sets a number of views/tabs opened in this process. |
| virtual void SetNumberOfViews(int number_of_views) = 0; |
| |
| // Returns the bitmap to show when a plugin crashed, or NULL for none. |
| virtual SkBitmap* GetSadPluginBitmap() = 0; |
| |
| // Returns the default text encoding. |
| virtual std::string GetDefaultEncoding() = 0; |
| |
| // Create a plugin in the given frame. Can return NULL, in which case |
| // RenderView will create a plugin itself. |
| virtual WebKit::WebPlugin* CreatePlugin( |
| RenderView* render_view, |
| WebKit::WebFrame* frame, |
| const WebKit::WebPluginParams& params) = 0; |
| |
| // Give the embedder the ability to set an error page. |
| virtual void ShowErrorPage(RenderView* render_view, |
| WebKit::WebFrame* frame, |
| int http_status_code) = 0; |
| |
| // Returns the html to display when a navigation error occurs. |
| virtual std::string GetNavigationErrorHtml( |
| const WebKit::WebURLRequest& failed_request, |
| const WebKit::WebURLError& error) = 0; |
| |
| // Returns true if the renderer process should schedule the idle handler when |
| // all widgets are hidden. |
| virtual bool RunIdleHandlerWhenWidgetsHidden() = 0; |
| |
| // Returns true if the given url can create popup windows. |
| virtual bool AllowPopup(const GURL& creator) = 0; |
| |
| // Returns true if we should fork a new process for the given navigation. |
| virtual bool ShouldFork(WebKit::WebFrame* frame, |
| const GURL& url, |
| bool is_content_initiated, |
| bool is_initial_navigation, |
| bool* send_referrer) = 0; |
| |
| // Notifies the embedder that the given frame is requesting the resource at |
| // |url|. If the function returns true, the url is changed to |new_url|. |
| virtual bool WillSendRequest(WebKit::WebFrame* frame, |
| const GURL& url, |
| GURL* new_url) = 0; |
| |
| // Whether to pump events when sending sync cookie messages. Needed if the |
| // embedder can potentiall put up a modal dialog on the UI thread as a result. |
| virtual bool ShouldPumpEventsDuringCookieMessage() = 0; |
| |
| // See the corresponding functions in WebKit::WebFrameClient. |
| virtual void DidCreateScriptContext(WebKit::WebFrame* frame) = 0; |
| virtual void DidDestroyScriptContext(WebKit::WebFrame* frame) = 0; |
| virtual void DidCreateIsolatedScriptContext( |
| WebKit::WebFrame* frame, |
| int world_id, |
| v8::Handle<v8::Context> context) = 0; |
| |
| // See WebKit::WebKitClient. |
| virtual unsigned long long VisitedLinkHash(const char* canonical_url, |
| size_t length) = 0; |
| virtual bool IsLinkVisited(unsigned long long link_hash) = 0; |
| virtual void PrefetchHostName(const char* hostname, size_t length) = 0; |
| virtual bool ShouldOverridePageVisibilityState( |
| const RenderView* render_view, |
| WebKit::WebPageVisibilityState* override_state) const = 0; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_RENDERER_CONTENT_RENDERER_CLIENT_H_ |