| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.content.browser; | 5 package org.chromium.content.browser; |
| 6 | 6 |
| 7 import android.content.ActivityNotFoundException; | 7 import android.content.ActivityNotFoundException; |
| 8 import android.content.Context; | 8 import android.content.Context; |
| 9 import android.content.Intent; | 9 import android.content.Intent; |
| 10 import android.view.KeyEvent; | 10 import android.view.KeyEvent; |
| 11 import android.view.View.MeasureSpec; | 11 import android.view.View.MeasureSpec; |
| 12 | 12 |
| 13 import org.chromium.base.Log; | 13 import org.chromium.base.Log; |
| 14 | 14 |
| 15 /** | 15 /** |
| 16 * Main callback class used by ContentView. | 16 * Main callback class used by ContentView. |
| 17 * | 17 * |
| 18 * This contains the superset of callbacks required to implement the browser UI
and the callbacks | 18 * This contains the superset of callbacks required to implement the browser UI
and the callbacks |
| 19 * required to implement the WebView API. | 19 * required to implement the WebView API. |
| 20 * The memory and reference ownership of this class is unusual - see the .cc fi
le and ContentView | 20 * The memory and reference ownership of this class is unusual - see the .cc fi
le and ContentView |
| 21 * for more details. | 21 * for more details. |
| 22 * | 22 * |
| 23 * TODO(mkosiba): Rid this guy of default implementations. This class is used b
y both WebView and | 23 * TODO(mkosiba): Rid this guy of default implementations. This class is used b
y both WebView and |
| 24 * the browser and we don't want a the browser-specific default implementation
to accidentally leak | 24 * the browser and we don't want a the browser-specific default implementation
to accidentally leak |
| 25 * over to WebView. | 25 * over to WebView. |
| 26 */ | 26 */ |
| 27 public class ContentViewClient { | 27 public class ContentViewClient { |
| 28 // Tag used for logging. | 28 // Tag used for logging. |
| 29 private static final String TAG = "cr.ContentViewClient"; | 29 private static final String TAG = "cr_ContentViewClient"; |
| 30 | 30 |
| 31 // Default value to signal that the ContentView's size should not be overrid
den. | 31 // Default value to signal that the ContentView's size should not be overrid
den. |
| 32 private static final int UNSPECIFIED_MEASURE_SPEC = | 32 private static final int UNSPECIFIED_MEASURE_SPEC = |
| 33 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); | 33 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); |
| 34 | 34 |
| 35 private static final String GEO_SCHEME = "geo"; |
| 36 private static final String TEL_SCHEME = "tel"; |
| 37 private static final String MAILTO_SCHEME = "mailto"; |
| 38 |
| 35 public void onUpdateTitle(String title) { | 39 public void onUpdateTitle(String title) { |
| 36 } | 40 } |
| 37 | 41 |
| 38 /** | 42 /** |
| 39 * Called whenever the background color of the page changes as notified by W
ebKit. | 43 * Called whenever the background color of the page changes as notified by W
ebKit. |
| 40 * @param color The new ARGB color of the page background. | 44 * @param color The new ARGB color of the page background. |
| 41 */ | 45 */ |
| 42 public void onBackgroundColorChanged(int color) { | 46 public void onBackgroundColorChanged(int color) { |
| 43 } | 47 } |
| 44 | 48 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 } | 141 } |
| 138 | 142 |
| 139 /** | 143 /** |
| 140 * Called when a new content intent is requested to be started. | 144 * Called when a new content intent is requested to be started. |
| 141 */ | 145 */ |
| 142 public void onStartContentIntent(Context context, String intentUrl, boolean
isMainFrame) { | 146 public void onStartContentIntent(Context context, String intentUrl, boolean
isMainFrame) { |
| 143 Intent intent; | 147 Intent intent; |
| 144 // Perform generic parsing of the URI to turn it into an Intent. | 148 // Perform generic parsing of the URI to turn it into an Intent. |
| 145 try { | 149 try { |
| 146 intent = Intent.parseUri(intentUrl, Intent.URI_INTENT_SCHEME); | 150 intent = Intent.parseUri(intentUrl, Intent.URI_INTENT_SCHEME); |
| 151 |
| 152 String scheme = intent.getScheme(); |
| 153 if (!scheme.equals(GEO_SCHEME) && !scheme.equals(TEL_SCHEME) |
| 154 && !scheme.equals(MAILTO_SCHEME)) { |
| 155 Log.w(TAG, "Invalid scheme for URI %s", intentUrl); |
| 156 return; |
| 157 } |
| 158 |
| 147 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | 159 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); |
| 148 } catch (Exception ex) { | 160 } catch (Exception ex) { |
| 149 Log.w(TAG, "Bad URI %s", intentUrl, ex); | 161 Log.w(TAG, "Bad URI %s", intentUrl, ex); |
| 150 return; | 162 return; |
| 151 } | 163 } |
| 152 | 164 |
| 153 try { | 165 try { |
| 154 context.startActivity(intent); | 166 context.startActivity(intent); |
| 155 } catch (ActivityNotFoundException ex) { | 167 } catch (ActivityNotFoundException ex) { |
| 156 Log.w(TAG, "No application can handle %s", intentUrl); | 168 Log.w(TAG, "No application can handle %s", intentUrl); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 return 0; | 272 return 0; |
| 261 } | 273 } |
| 262 | 274 |
| 263 /** | 275 /** |
| 264 * Return the product version. | 276 * Return the product version. |
| 265 */ | 277 */ |
| 266 public String getProductVersion() { | 278 public String getProductVersion() { |
| 267 return ""; | 279 return ""; |
| 268 } | 280 } |
| 269 } | 281 } |
| OLD | NEW |