blob: dd93c1f301b587fb416c78fc9ebd1df7525597e8 [file] [log] [blame]
Michael Kolba2b2ba82010-08-04 17:54:03 -07001/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
Michael Kolb377ea312011-02-17 14:36:56 -08004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
Michael Kolba2b2ba82010-08-04 17:54:03 -07007 *
Michael Kolb377ea312011-02-17 14:36:56 -08008 * http://www.apache.org/licenses/LICENSE-2.0
Michael Kolba2b2ba82010-08-04 17:54:03 -07009 *
10 * Unless required by applicable law or agreed to in writing, software
Michael Kolb377ea312011-02-17 14:36:56 -080011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
Michael Kolba2b2ba82010-08-04 17:54:03 -070015 */
16
17package com.android.browser;
18
19import android.content.Context;
John Reck8ee633f2011-08-09 16:00:35 -070020import android.graphics.Canvas;
Michael Kolba2b2ba82010-08-04 17:54:03 -070021import android.util.AttributeSet;
22import android.view.View;
23import android.webkit.WebView;
24
25import java.util.Map;
26
27/**
Michael Kolb377ea312011-02-17 14:36:56 -080028 * Manage WebView scroll events
Michael Kolba2b2ba82010-08-04 17:54:03 -070029 */
Michael Kolbb14ff2f2011-07-01 15:33:56 -070030public class BrowserWebView extends WebView {
Michael Kolba2b2ba82010-08-04 17:54:03 -070031
Romain Guy860662a2011-01-10 12:57:22 -080032 private boolean mBackgroundRemoved = false;
John Reck0f602f32011-07-07 15:38:43 -070033 private TitleBar mTitleBar;
Michael Kolba2b2ba82010-08-04 17:54:03 -070034
35 /**
36 * @param context
37 * @param attrs
38 * @param defStyle
39 * @param javascriptInterfaces
40 */
John Reckb9a051b2011-03-18 11:55:48 -070041 public BrowserWebView(Context context, AttributeSet attrs, int defStyle,
Michael Kolba2b2ba82010-08-04 17:54:03 -070042 Map<String, Object> javascriptInterfaces, boolean privateBrowsing) {
43 super(context, attrs, defStyle, javascriptInterfaces, privateBrowsing);
44 }
45
46 /**
47 * @param context
48 * @param attrs
49 * @param defStyle
50 */
John Reckb9a051b2011-03-18 11:55:48 -070051 public BrowserWebView(
Michael Kolb377ea312011-02-17 14:36:56 -080052 Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
Michael Kolba2b2ba82010-08-04 17:54:03 -070053 super(context, attrs, defStyle, privateBrowsing);
54 }
55
56 /**
57 * @param context
58 * @param attrs
59 */
John Reckb9a051b2011-03-18 11:55:48 -070060 public BrowserWebView(Context context, AttributeSet attrs) {
Michael Kolba2b2ba82010-08-04 17:54:03 -070061 super(context, attrs);
62 }
63
64 /**
65 * @param context
66 */
John Reckb9a051b2011-03-18 11:55:48 -070067 public BrowserWebView(Context context) {
Michael Kolba2b2ba82010-08-04 17:54:03 -070068 super(context);
Michael Kolb2814a362011-05-19 15:49:41 -070069 }
70
Michael Kolb08a687a2011-04-22 16:13:02 -070071 @Override
Michael Kolb29ccf8a2011-02-23 16:13:24 -080072 protected int getTitleHeight() {
73 return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0;
74 }
75
Michael Kolbed217742010-08-10 17:52:34 -070076 void hideEmbeddedTitleBar() {
77 scrollBy(0, getVisibleTitleHeight());
78 }
79
Michael Kolba2b2ba82010-08-04 17:54:03 -070080 @Override
81 public void setEmbeddedTitleBar(final View title) {
82 super.setEmbeddedTitleBar(title);
John Reck0f602f32011-07-07 15:38:43 -070083 mTitleBar = (TitleBar) title;
Michael Kolba2b2ba82010-08-04 17:54:03 -070084 }
85
Michael Kolb377ea312011-02-17 14:36:56 -080086 public boolean hasTitleBar() {
87 return (mTitleBar != null);
88 }
89
Michael Kolb377ea312011-02-17 14:36:56 -080090 @Override
91 protected void onDraw(android.graphics.Canvas c) {
Michael Kolbf2628922011-03-09 17:15:28 -080092 super.onDraw(c);
93 if (!mBackgroundRemoved && getRootView().getBackground() != null) {
94 mBackgroundRemoved = true;
95 post(new Runnable() {
96 public void run() {
97 getRootView().setBackgroundDrawable(null);
98 }
99 });
Michael Kolb377ea312011-02-17 14:36:56 -0800100 }
101 }
102
John Reck8ee633f2011-08-09 16:00:35 -0700103 public void drawContent(Canvas c) {
104 onDraw(c);
105 }
106
Michael Kolba2b2ba82010-08-04 17:54:03 -0700107}