1// Copyright (c) 2013 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#ifndef ANDROID_WEBVIEW_NATIVE_JAVA_BROWSER_VIEW_RENDERER_HELPER_H_
6#define ANDROID_WEBVIEW_NATIVE_JAVA_BROWSER_VIEW_RENDERER_HELPER_H_
7
8#include "android_webview/browser/browser_view_renderer.h"
9#include "base/android/scoped_java_ref.h"
10#include "base/compiler_specific.h"
11
12namespace android_webview {
13
14// Native side of java-class of same name.
15// Provides utility methods for rendering involving with Java objects.
16// TODO(boliu): Rename this class to JavaRasterHelper.
17class JavaBrowserViewRendererHelper : public BrowserViewRendererJavaHelper {
18 public:
19  JavaBrowserViewRendererHelper();
20  virtual ~JavaBrowserViewRendererHelper();
21
22  static void SetAwDrawSWFunctionTable(AwDrawSWFunctionTable* table);
23  static JavaBrowserViewRendererHelper* GetInstance();
24
25  // BrowserViewRendererJavaHelper implementation.
26  virtual bool RenderViaAuxilaryBitmapIfNeeded(
27      jobject java_canvas,
28      const gfx::Vector2d& scroll_correction,
29      const gfx::Size& auxiliary_bitmap_size,
30      RenderMethod render_source) OVERRIDE;
31
32 private:
33  bool RenderViaAuxilaryBitmap(JNIEnv* env,
34                               jobject java_canvas,
35                               const gfx::Vector2d& scroll_correction,
36                               const gfx::Size& auxiliary_bitmap_size,
37                               const RenderMethod& render_source);
38  bool RasterizeIntoBitmap(
39      JNIEnv* env,
40      const base::android::JavaRef<jobject>& jbitmap,
41      const JavaBrowserViewRendererHelper::RenderMethod& renderer);
42};
43
44bool RegisterJavaBrowserViewRendererHelper(JNIEnv* env);
45
46}  // namespace android_webview
47
48#endif  // ANDROID_WEBVIEW_NATIVE_JAVA_BROWSER_VIEW_RENDERER_HELPER_H_
49