• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
3  *
4  * 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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * 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.
15  */
16 
17 package com.android.browser;
18 
19 import android.content.Context;
20 import android.graphics.Canvas;
21 import android.util.AttributeSet;
22 import android.view.View;
23 import android.webkit.WebView;
24 import android.webkit.WebViewClassic;
25 
26 import java.util.Map;
27 
28 /**
29  * Manage WebView scroll events
30  */
31 public class BrowserWebView extends WebView implements WebViewClassic.TitleBarDelegate {
32 
33     public interface OnScrollChangedListener {
onScrollChanged(int l, int t, int oldl, int oldt)34         void onScrollChanged(int l, int t, int oldl, int oldt);
35     }
36 
37     private boolean mBackgroundRemoved = false;
38     private TitleBar mTitleBar;
39     private OnScrollChangedListener mOnScrollChangedListener;
40 
41     /**
42      * @param context
43      * @param attrs
44      * @param defStyle
45      * @param javascriptInterfaces
46      */
BrowserWebView(Context context, AttributeSet attrs, int defStyle, Map<String, Object> javascriptInterfaces, boolean privateBrowsing)47     public BrowserWebView(Context context, AttributeSet attrs, int defStyle,
48             Map<String, Object> javascriptInterfaces, boolean privateBrowsing) {
49         super(context, attrs, defStyle, javascriptInterfaces, privateBrowsing);
50     }
51 
52     /**
53      * @param context
54      * @param attrs
55      * @param defStyle
56      */
BrowserWebView( Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing)57     public BrowserWebView(
58             Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
59         super(context, attrs, defStyle, privateBrowsing);
60     }
61 
62     /**
63      * @param context
64      * @param attrs
65      */
BrowserWebView(Context context, AttributeSet attrs)66     public BrowserWebView(Context context, AttributeSet attrs) {
67         super(context, attrs);
68     }
69 
70     /**
71      * @param context
72      */
BrowserWebView(Context context)73     public BrowserWebView(Context context) {
74         super(context);
75     }
76 
setTitleBar(TitleBar title)77     public void setTitleBar(TitleBar title) {
78         mTitleBar = title;
79     }
80 
81     // From TitleBarDelegate
82     @Override
getTitleHeight()83     public int getTitleHeight() {
84         return (mTitleBar != null) ? mTitleBar.getEmbeddedHeight() : 0;
85     }
86 
87     // From TitleBarDelegate
88     @Override
onSetEmbeddedTitleBar(final View title)89     public void onSetEmbeddedTitleBar(final View title) {
90     }
91 
hasTitleBar()92     public boolean hasTitleBar() {
93         return (mTitleBar != null);
94     }
95 
96     @Override
onDraw(Canvas c)97     protected void onDraw(Canvas c) {
98         super.onDraw(c);
99         if (!mBackgroundRemoved && getRootView().getBackground() != null) {
100             mBackgroundRemoved = true;
101             post(new Runnable() {
102                 public void run() {
103                     getRootView().setBackgroundDrawable(null);
104                 }
105             });
106         }
107     }
108 
drawContent(Canvas c)109     public void drawContent(Canvas c) {
110         onDraw(c);
111     }
112 
113     @Override
onScrollChanged(int l, int t, int oldl, int oldt)114     protected void onScrollChanged(int l, int t, int oldl, int oldt) {
115         super.onScrollChanged(l, t, oldl, oldt);
116         if (mTitleBar != null) {
117             mTitleBar.onScrollChanged();
118         }
119         if (mOnScrollChangedListener != null) {
120             mOnScrollChangedListener.onScrollChanged(l, t, oldl, oldt);
121         }
122     }
123 
setOnScrollChangedListener(OnScrollChangedListener listener)124     public void setOnScrollChangedListener(OnScrollChangedListener listener) {
125         mOnScrollChangedListener = listener;
126     }
127 
128     @Override
showContextMenuForChild(View originalView)129     public boolean showContextMenuForChild(View originalView) {
130         return false;
131     }
132 
133     @Override
destroy()134     public void destroy() {
135         BrowserSettings.getInstance().stopManagingSettings(getSettings());
136         super.destroy();
137     }
138 
139 }
140