Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(765)

Side by Side Diff: android_webview/glue/java/src/com/android/webview/chromium/WebViewContentsClientAdapter.java

Issue 795053007: Replace TraceEvent.begin()/end() with explicit names (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 com.android.webview.chromium; 5 package com.android.webview.chromium;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.ActivityNotFoundException; 8 import android.content.ActivityNotFoundException;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.Intent; 10 import android.content.Intent;
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 235
236 //-------------------------------------------------------------------------- ------------------ 236 //-------------------------------------------------------------------------- ------------------
237 // Adapter for all the methods. 237 // Adapter for all the methods.
238 //-------------------------------------------------------------------------- ------------------ 238 //-------------------------------------------------------------------------- ------------------
239 239
240 /** 240 /**
241 * @see AwContentsClient#getVisitedHistory 241 * @see AwContentsClient#getVisitedHistory
242 */ 242 */
243 @Override 243 @Override
244 public void getVisitedHistory(ValueCallback<String[]> callback) { 244 public void getVisitedHistory(ValueCallback<String[]> callback) {
245 TraceEvent.begin(); 245 try {
246 if (mWebChromeClient != null) { 246 TraceEvent.begin("WebViewContentsClientAdapter.getVisitedHistory");
247 if (TRACE) Log.d(TAG, "getVisitedHistory"); 247 if (mWebChromeClient != null) {
248 mWebChromeClient.getVisitedHistory(callback); 248 if (TRACE) Log.d(TAG, "getVisitedHistory");
249 mWebChromeClient.getVisitedHistory(callback);
250 }
251 } finally {
252 TraceEvent.end("WebViewContentsClientAdapter.getVisitedHistory");
249 } 253 }
250 TraceEvent.end();
251 } 254 }
252 255
253 /** 256 /**
254 * @see AwContentsClient#doUpdateVisiteHistory(String, boolean) 257 * @see AwContentsClient#doUpdateVisiteHistory(String, boolean)
255 */ 258 */
256 @Override 259 @Override
257 public void doUpdateVisitedHistory(String url, boolean isReload) { 260 public void doUpdateVisitedHistory(String url, boolean isReload) {
258 TraceEvent.begin(); 261 try {
259 if (TRACE) Log.d(TAG, "doUpdateVisitedHistory=" + url + " reload=" + isR eload); 262 TraceEvent.begin("WebViewContentsClientAdapter.doUpdateVisitedHistor y");
260 mWebViewClient.doUpdateVisitedHistory(mWebView, url, isReload); 263 if (TRACE) Log.d(TAG, "doUpdateVisitedHistory=" + url + " reload=" + isReload);
261 TraceEvent.end(); 264 mWebViewClient.doUpdateVisitedHistory(mWebView, url, isReload);
265 } finally {
266 TraceEvent.end("WebViewContentsClientAdapter.doUpdateVisitedHistory" );
267 }
262 } 268 }
263 269
264 /** 270 /**
265 * @see AwContentsClient#onProgressChanged(int) 271 * @see AwContentsClient#onProgressChanged(int)
266 */ 272 */
267 @Override 273 @Override
268 public void onProgressChanged(int progress) { 274 public void onProgressChanged(int progress) {
269 TraceEvent.begin(); 275 try {
270 if (mWebChromeClient != null) { 276 TraceEvent.begin("WebViewContentsClientAdapter.onProgressChanged");
271 if (TRACE) Log.d(TAG, "onProgressChanged=" + progress); 277 if (mWebChromeClient != null) {
272 mWebChromeClient.onProgressChanged(mWebView, progress); 278 if (TRACE) Log.d(TAG, "onProgressChanged=" + progress);
279 mWebChromeClient.onProgressChanged(mWebView, progress);
280 }
281 } finally {
282 TraceEvent.end("WebViewContentsClientAdapter.onProgressChanged");
273 } 283 }
274 TraceEvent.end();
275 } 284 }
276 285
277 private static class WebResourceRequestImpl implements WebResourceRequest { 286 private static class WebResourceRequestImpl implements WebResourceRequest {
278 private final ShouldInterceptRequestParams mParams; 287 private final ShouldInterceptRequestParams mParams;
279 288
280 public WebResourceRequestImpl(ShouldInterceptRequestParams params) { 289 public WebResourceRequestImpl(ShouldInterceptRequestParams params) {
281 mParams = params; 290 mParams = params;
282 } 291 }
283 292
284 @Override 293 @Override
(...skipping 20 matching lines...) Expand all
305 public Map<String, String> getRequestHeaders() { 314 public Map<String, String> getRequestHeaders() {
306 return mParams.requestHeaders; 315 return mParams.requestHeaders;
307 } 316 }
308 } 317 }
309 318
310 /** 319 /**
311 * @see AwContentsClient#shouldInterceptRequest(java.lang.String) 320 * @see AwContentsClient#shouldInterceptRequest(java.lang.String)
312 */ 321 */
313 @Override 322 @Override
314 public AwWebResourceResponse shouldInterceptRequest(ShouldInterceptRequestPa rams params) { 323 public AwWebResourceResponse shouldInterceptRequest(ShouldInterceptRequestPa rams params) {
315 TraceEvent.begin(); 324 try {
316 if (TRACE) Log.d(TAG, "shouldInterceptRequest=" + params.url); 325 TraceEvent.begin("WebViewContentsClientAdapter.shouldInterceptReques t");
317 WebResourceResponse response = 326 if (TRACE) Log.d(TAG, "shouldInterceptRequest=" + params.url);
318 mWebViewClient.shouldInterceptRequest(mWebView, new WebResourceR equestImpl(params)); 327 WebResourceResponse response = mWebViewClient.shouldInterceptRequest (mWebView,
319 TraceEvent.end(); 328 new WebResourceRequestImpl(params));
320 if (response == null) return null; 329 if (response == null) return null;
321 330
322 // AwWebResourceResponse should support null headers. b/16332774. 331 // AwWebResourceResponse should support null headers. b/16332774.
323 Map<String, String> responseHeaders = response.getResponseHeaders(); 332 Map<String, String> responseHeaders = response.getResponseHeaders();
324 if (responseHeaders == null) responseHeaders = new HashMap<String, Strin g>(); 333 if (responseHeaders == null) responseHeaders = new HashMap<String, S tring>();
325 334
326 return new AwWebResourceResponse( 335 return new AwWebResourceResponse(
327 response.getMimeType(), 336 response.getMimeType(),
328 response.getEncoding(), 337 response.getEncoding(),
329 response.getData(), 338 response.getData(),
330 response.getStatusCode(), 339 response.getStatusCode(),
331 response.getReasonPhrase(), 340 response.getReasonPhrase(),
332 responseHeaders); 341 responseHeaders);
342 } finally {
343 TraceEvent.end("WebViewContentsClientAdapter.shouldInterceptRequest" );
344 }
333 } 345 }
334 346
335 /** 347 /**
336 * @see AwContentsClient#shouldOverrideUrlLoading(java.lang.String) 348 * @see AwContentsClient#shouldOverrideUrlLoading(java.lang.String)
337 */ 349 */
338 @Override 350 @Override
339 public boolean shouldOverrideUrlLoading(String url) { 351 public boolean shouldOverrideUrlLoading(String url) {
340 TraceEvent.begin(); 352 try {
341 if (TRACE) Log.d(TAG, "shouldOverrideUrlLoading=" + url); 353 TraceEvent.begin("WebViewContentsClientAdapter.shouldOverrideUrlLoad ing");
342 boolean result = mWebViewClient.shouldOverrideUrlLoading(mWebView, url); 354 if (TRACE) Log.d(TAG, "shouldOverrideUrlLoading=" + url);
343 TraceEvent.end(); 355 boolean result = mWebViewClient.shouldOverrideUrlLoading(mWebView, u rl);
344 return result; 356 return result;
357 } finally {
358 TraceEvent.end("WebViewContentsClientAdapter.shouldOverrideUrlLoadin g");
359 }
345 } 360 }
346 361
347 /** 362 /**
348 * @see AwContentsClient#onUnhandledKeyEvent(android.view.KeyEvent) 363 * @see AwContentsClient#onUnhandledKeyEvent(android.view.KeyEvent)
349 */ 364 */
350 @Override 365 @Override
351 public void onUnhandledKeyEvent(KeyEvent event) { 366 public void onUnhandledKeyEvent(KeyEvent event) {
352 TraceEvent.begin(); 367 try {
353 if (TRACE) Log.d(TAG, "onUnhandledKeyEvent"); 368 TraceEvent.begin("WebViewContentsClientAdapter.onUnhandledKeyEvent") ;
354 mWebViewClient.onUnhandledKeyEvent(mWebView, event); 369 if (TRACE) Log.d(TAG, "onUnhandledKeyEvent");
355 TraceEvent.end(); 370 mWebViewClient.onUnhandledKeyEvent(mWebView, event);
371 } finally {
372 TraceEvent.end("WebViewContentsClientAdapter.onUnhandledKeyEvent");
373 }
356 } 374 }
357 375
358 /** 376 /**
359 * @see AwContentsClient#onConsoleMessage(android.webkit.ConsoleMessage) 377 * @see AwContentsClient#onConsoleMessage(android.webkit.ConsoleMessage)
360 */ 378 */
361 @Override 379 @Override
362 public boolean onConsoleMessage(ConsoleMessage consoleMessage) { 380 public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
363 TraceEvent.begin(); 381 try {
364 boolean result; 382 TraceEvent.begin("WebViewContentsClientAdapter.onConsoleMessage");
365 if (mWebChromeClient != null) { 383 boolean result;
366 if (TRACE) Log.d(TAG, "onConsoleMessage: " + consoleMessage.message( )); 384 if (mWebChromeClient != null) {
367 result = mWebChromeClient.onConsoleMessage(consoleMessage); 385 if (TRACE) Log.d(TAG, "onConsoleMessage: " + consoleMessage.mess age());
368 String message = consoleMessage.message(); 386 result = mWebChromeClient.onConsoleMessage(consoleMessage);
369 if (result && message != null && message.startsWith("[blocked]")) { 387 String message = consoleMessage.message();
370 Log.e(TAG, "Blocked URL: " + message); 388 if (result && message != null && message.startsWith("[blocked]") ) {
389 Log.e(TAG, "Blocked URL: " + message);
390 }
391 } else {
392 result = false;
371 } 393 }
372 } else { 394 return result;
373 result = false; 395 } finally {
396 TraceEvent.end("WebViewContentsClientAdapter.onConsoleMessage");
374 } 397 }
375 TraceEvent.end();
376 return result;
377 } 398 }
378 399
379 /** 400 /**
380 * @see AwContentsClient#onFindResultReceived(int,int,boolean) 401 * @see AwContentsClient#onFindResultReceived(int,int,boolean)
381 */ 402 */
382 @Override 403 @Override
383 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches , 404 public void onFindResultReceived(int activeMatchOrdinal, int numberOfMatches ,
384 boolean isDoneCounting) { 405 boolean isDoneCounting) {
385 if (mFindListener == null) return; 406 try {
386 TraceEvent.begin(); 407 TraceEvent.begin("WebViewContentsClientAdapter.onFindResultReceived" );
387 if (TRACE) Log.d(TAG, "onFindResultReceived"); 408 if (mFindListener == null) return;
388 mFindListener.onFindResultReceived(activeMatchOrdinal, numberOfMatches, isDoneCounting); 409 if (TRACE) Log.d(TAG, "onFindResultReceived");
389 TraceEvent.end(); 410 mFindListener.onFindResultReceived(activeMatchOrdinal, numberOfMatch es, isDoneCounting);
411 } finally {
412 TraceEvent.end("WebViewContentsClientAdapter.onFindResultReceived");
413 }
390 } 414 }
391 415
392 /** 416 /**
393 * @See AwContentsClient#onNewPicture(Picture) 417 * @See AwContentsClient#onNewPicture(Picture)
394 */ 418 */
395 @Override 419 @Override
396 public void onNewPicture(Picture picture) { 420 public void onNewPicture(Picture picture) {
397 if (mPictureListener == null) return; 421 try {
398 TraceEvent.begin(); 422 TraceEvent.begin("WebViewContentsClientAdapter.onNewPicture");
399 if (TRACE) Log.d(TAG, "onNewPicture"); 423 if (mPictureListener == null) return;
400 mPictureListener.onNewPicture(mWebView, picture); 424 if (TRACE) Log.d(TAG, "onNewPicture");
401 TraceEvent.end(); 425 mPictureListener.onNewPicture(mWebView, picture);
426 } finally {
427 TraceEvent.end("WebViewContentsClientAdapter.onNewPicture");
428 }
402 } 429 }
403 430
404 @Override 431 @Override
405 public void onLoadResource(String url) { 432 public void onLoadResource(String url) {
406 TraceEvent.begin(); 433 try {
407 if (TRACE) Log.d(TAG, "onLoadResource=" + url); 434 TraceEvent.begin("WebViewContentsClientAdapter.onLoadResource");
408 mWebViewClient.onLoadResource(mWebView, url); 435 if (TRACE) Log.d(TAG, "onLoadResource=" + url);
409 TraceEvent.end(); 436 mWebViewClient.onLoadResource(mWebView, url);
437 } finally {
438 TraceEvent.end("WebViewContentsClientAdapter.onLoadResource");
439 }
410 } 440 }
411 441
412 @Override 442 @Override
413 public boolean onCreateWindow(boolean isDialog, boolean isUserGesture) { 443 public boolean onCreateWindow(boolean isDialog, boolean isUserGesture) {
414 Message m = mUiThreadHandler.obtainMessage( 444 try {
415 NEW_WEBVIEW_CREATED, mWebView.new WebViewTransport()); 445 TraceEvent.begin("WebViewContentsClientAdapter.onCreateWindow");
416 TraceEvent.begin(); 446 Message m = mUiThreadHandler.obtainMessage(
417 boolean result; 447 NEW_WEBVIEW_CREATED, mWebView.new WebViewTransport());
418 if (mWebChromeClient != null) { 448 boolean result;
419 if (TRACE) Log.d(TAG, "onCreateWindow"); 449 if (mWebChromeClient != null) {
420 result = mWebChromeClient.onCreateWindow(mWebView, isDialog, isUserG esture, m); 450 if (TRACE) Log.d(TAG, "onCreateWindow");
421 } else { 451 result = mWebChromeClient.onCreateWindow(mWebView, isDialog, isU serGesture, m);
422 result = false; 452 } else {
453 result = false;
454 }
455 return result;
456 } finally {
457 TraceEvent.end("WebViewContentsClientAdapter.onCreateWindow");
423 } 458 }
424 TraceEvent.end();
425 return result;
426 } 459 }
427 460
428 /** 461 /**
429 * @see AwContentsClient#onCloseWindow() 462 * @see AwContentsClient#onCloseWindow()
430 */ 463 */
431 @Override 464 @Override
432 public void onCloseWindow() { 465 public void onCloseWindow() {
433 TraceEvent.begin(); 466 try {
434 if (mWebChromeClient != null) { 467 TraceEvent.begin("WebViewContentsClientAdapter.onCloseWindow");
435 if (TRACE) Log.d(TAG, "onCloseWindow"); 468 if (mWebChromeClient != null) {
436 mWebChromeClient.onCloseWindow(mWebView); 469 if (TRACE) Log.d(TAG, "onCloseWindow");
470 mWebChromeClient.onCloseWindow(mWebView);
471 }
472 } finally {
473 TraceEvent.end("WebViewContentsClientAdapter.onCloseWindow");
437 } 474 }
438 TraceEvent.end();
439 } 475 }
440 476
441 /** 477 /**
442 * @see AwContentsClient#onRequestFocus() 478 * @see AwContentsClient#onRequestFocus()
443 */ 479 */
444 @Override 480 @Override
445 public void onRequestFocus() { 481 public void onRequestFocus() {
446 TraceEvent.begin(); 482 try {
447 if (mWebChromeClient != null) { 483 TraceEvent.begin("WebViewContentsClientAdapter.onRequestFocus");
448 if (TRACE) Log.d(TAG, "onRequestFocus"); 484 if (mWebChromeClient != null) {
449 mWebChromeClient.onRequestFocus(mWebView); 485 if (TRACE) Log.d(TAG, "onRequestFocus");
486 mWebChromeClient.onRequestFocus(mWebView);
487 }
488 } finally {
489 TraceEvent.end("WebViewContentsClientAdapter.onRequestFocus");
450 } 490 }
451 TraceEvent.end();
452 } 491 }
453 492
454 /** 493 /**
455 * @see AwContentsClient#onReceivedTouchIconUrl(String url, boolean precompo sed) 494 * @see AwContentsClient#onReceivedTouchIconUrl(String url, boolean precompo sed)
456 */ 495 */
457 @Override 496 @Override
458 public void onReceivedTouchIconUrl(String url, boolean precomposed) { 497 public void onReceivedTouchIconUrl(String url, boolean precomposed) {
459 TraceEvent.begin(); 498 try {
460 if (mWebChromeClient != null) { 499 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedTouchIconUr l");
461 if (TRACE) Log.d(TAG, "onReceivedTouchIconUrl=" + url); 500 if (mWebChromeClient != null) {
462 mWebChromeClient.onReceivedTouchIconUrl(mWebView, url, precomposed); 501 if (TRACE) Log.d(TAG, "onReceivedTouchIconUrl=" + url);
502 mWebChromeClient.onReceivedTouchIconUrl(mWebView, url, precompos ed);
503 }
504 } finally {
505 TraceEvent.end("WebViewContentsClientAdapter.onReceivedTouchIconUrl" );
463 } 506 }
464 TraceEvent.end();
465 } 507 }
466 508
467 /** 509 /**
468 * @see AwContentsClient#onReceivedIcon(Bitmap bitmap) 510 * @see AwContentsClient#onReceivedIcon(Bitmap bitmap)
469 */ 511 */
470 @Override 512 @Override
471 public void onReceivedIcon(Bitmap bitmap) { 513 public void onReceivedIcon(Bitmap bitmap) {
472 TraceEvent.begin(); 514 try {
473 if (mWebChromeClient != null) { 515 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedIcon");
474 if (TRACE) Log.d(TAG, "onReceivedIcon"); 516 if (mWebChromeClient != null) {
475 mWebChromeClient.onReceivedIcon(mWebView, bitmap); 517 if (TRACE) Log.d(TAG, "onReceivedIcon");
518 mWebChromeClient.onReceivedIcon(mWebView, bitmap);
519 }
520 } finally {
521 TraceEvent.end("WebViewContentsClientAdapter.onReceivedIcon");
476 } 522 }
477 TraceEvent.end();
478 } 523 }
479 524
480 /** 525 /**
481 * @see ContentViewClient#onPageStarted(String) 526 * @see ContentViewClient#onPageStarted(String)
482 */ 527 */
483 @Override 528 @Override
484 public void onPageStarted(String url) { 529 public void onPageStarted(String url) {
485 TraceEvent.begin(); 530 try {
486 if (TRACE) Log.d(TAG, "onPageStarted=" + url); 531 TraceEvent.begin("WebViewContentsClientAdapter.onPageStarted");
487 mWebViewClient.onPageStarted(mWebView, url, mWebView.getFavicon()); 532 if (TRACE) Log.d(TAG, "onPageStarted=" + url);
488 TraceEvent.end(); 533 mWebViewClient.onPageStarted(mWebView, url, mWebView.getFavicon());
534 } finally {
535 TraceEvent.end("WebViewContentsClientAdapter.onPageStarted");
536 }
489 } 537 }
490 538
491 /** 539 /**
492 * @see ContentViewClient#onPageFinished(String) 540 * @see ContentViewClient#onPageFinished(String)
493 */ 541 */
494 @Override 542 @Override
495 public void onPageFinished(String url) { 543 public void onPageFinished(String url) {
496 TraceEvent.begin(); 544 try {
497 if (TRACE) Log.d(TAG, "onPageFinished=" + url); 545 TraceEvent.begin("WebViewContentsClientAdapter.onPageFinished");
498 mWebViewClient.onPageFinished(mWebView, url); 546 if (TRACE) Log.d(TAG, "onPageFinished=" + url);
499 TraceEvent.end(); 547 mWebViewClient.onPageFinished(mWebView, url);
500 548
501 // See b/8208948 549 // See b/8208948
502 // This fakes an onNewPicture callback after onPageFinished to allow 550 // This fakes an onNewPicture callback after onPageFinished to allow
503 // CTS tests to run in an un-flaky manner. This is required as the 551 // CTS tests to run in an un-flaky manner. This is required as the
504 // path for sending Picture updates in Chromium are decoupled from the 552 // path for sending Picture updates in Chromium are decoupled from t he
505 // page loading callbacks, i.e. the Chrome compositor may draw our 553 // page loading callbacks, i.e. the Chrome compositor may draw our
506 // content and send the Picture before onPageStarted or onPageFinished 554 // content and send the Picture before onPageStarted or onPageFinish ed
507 // are invoked. The CTS harness discards any pictures it receives before 555 // are invoked. The CTS harness discards any pictures it receives be fore
508 // onPageStarted is invoked, so in the case we get the Picture before th at and 556 // onPageStarted is invoked, so in the case we get the Picture befor e that and
509 // no further updates after onPageStarted, we'll fail the test by timing 557 // no further updates after onPageStarted, we'll fail the test by ti ming
510 // out waiting for a Picture. 558 // out waiting for a Picture.
511 // To ensure backwards compatibility, we need to defer sending Picture u pdates 559 // To ensure backwards compatibility, we need to defer sending Pictu re updates
512 // until onPageFinished has been invoked. This work is being done 560 // until onPageFinished has been invoked. This work is being done
513 // upstream, and we can revert this hack when it lands. 561 // upstream, and we can revert this hack when it lands.
514 if (mPictureListener != null) { 562 if (mPictureListener != null) {
515 ThreadUtils.postOnUiThreadDelayed(new Runnable() { 563 ThreadUtils.postOnUiThreadDelayed(new Runnable() {
516 @Override 564 @Override
517 public void run() { 565 public void run() {
518 UnimplementedWebViewApi.invoke(); 566 UnimplementedWebViewApi.invoke();
519 if (mPictureListener != null) { 567 if (mPictureListener != null) {
520 if (TRACE) Log.d(TAG, "onPageFinished-fake"); 568 if (TRACE) Log.d(TAG, "onPageFinished-fake");
521 mPictureListener.onNewPicture(mWebView, new Picture()); 569 mPictureListener.onNewPicture(mWebView, new Picture( ));
570 }
522 } 571 }
523 } 572 }, 100);
524 }, 100); 573 }
574 } finally {
575 TraceEvent.end("WebViewContentsClientAdapter.onPageFinished");
525 } 576 }
526 } 577 }
527 578
528 /** 579 /**
529 * @see ContentViewClient#onReceivedError(int,String,String) 580 * @see ContentViewClient#onReceivedError(int,String,String)
530 */ 581 */
531 @Override 582 @Override
532 public void onReceivedError(int errorCode, String description, String failin gUrl) { 583 public void onReceivedError(int errorCode, String description, String failin gUrl) {
533 if (description == null || description.isEmpty()) { 584 try {
534 // ErrorStrings is @hidden, so we can't do this in AwContents. 585 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedError");
535 // Normally the net/ layer will set a valid description, but for syn thesized callbacks 586 if (description == null || description.isEmpty()) {
536 // (like in the case for intercepted requests) AwContents will pass in null. 587 // ErrorStrings is @hidden, so we can't do this in AwContents. Normally the net/
537 description = mWebViewDelegate.getErrorString(mContext, errorCode); 588 // layer will set a valid description, but for synthesized callb acks (like in the
589 // case for intercepted requests) AwContents will pass in null.
590 description = mWebViewDelegate.getErrorString(mContext, errorCod e);
591 }
592 if (TRACE) Log.d(TAG, "onReceivedError=" + failingUrl);
593 mWebViewClient.onReceivedError(mWebView, errorCode, description, fai lingUrl);
594 } finally {
595 TraceEvent.end("WebViewContentsClientAdapter.onReceivedError");
538 } 596 }
539 TraceEvent.begin();
540 if (TRACE) Log.d(TAG, "onReceivedError=" + failingUrl);
541 mWebViewClient.onReceivedError(mWebView, errorCode, description, failing Url);
542 TraceEvent.end();
543 } 597 }
544 598
545 /** 599 /**
546 * @see ContentViewClient#onReceivedTitle(String) 600 * @see ContentViewClient#onReceivedTitle(String)
547 */ 601 */
548 @Override 602 @Override
549 public void onReceivedTitle(String title) { 603 public void onReceivedTitle(String title) {
550 TraceEvent.begin(); 604 try {
551 if (mWebChromeClient != null) { 605 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedTitle");
552 if (TRACE) Log.d(TAG, "onReceivedTitle"); 606 if (mWebChromeClient != null) {
553 mWebChromeClient.onReceivedTitle(mWebView, title); 607 if (TRACE) Log.d(TAG, "onReceivedTitle");
608 mWebChromeClient.onReceivedTitle(mWebView, title);
609 }
610 } finally {
611 TraceEvent.end("WebViewContentsClientAdapter.onReceivedTitle");
554 } 612 }
555 TraceEvent.end();
556 } 613 }
557 614
558 /** 615 /**
559 * @see ContentViewClient#shouldOverrideKeyEvent(KeyEvent) 616 * @see ContentViewClient#shouldOverrideKeyEvent(KeyEvent)
560 */ 617 */
561 @Override 618 @Override
562 public boolean shouldOverrideKeyEvent(KeyEvent event) { 619 public boolean shouldOverrideKeyEvent(KeyEvent event) {
563 // The check below is reflecting Clank's behavior and is a workaround fo r http://b/7697782. 620 try {
564 // 1. The check for system key should be made in AwContents or ContentVi ewCore, before 621 TraceEvent.begin("WebViewContentsClientAdapter.shouldOverrideKeyEven t");
565 // shouldOverrideKeyEvent() is called at all. 622 // The check below is reflecting Clank's behavior and is a workaroun d for
566 // 2. shouldOverrideKeyEvent() should be called in onKeyDown/onKeyUp, no t from 623 // http://b/7697782.
567 // dispatchKeyEvent(). 624 // 1. The check for system key should be made in AwContents or Conte ntViewCore, before
568 if (!ContentViewClient.shouldPropagateKey(event.getKeyCode())) return tr ue; 625 // shouldOverrideKeyEvent() is called at all.
569 TraceEvent.begin(); 626 // 2. shouldOverrideKeyEvent() should be called in onKeyDown/onKeyUp , not from
570 if (TRACE) Log.d(TAG, "shouldOverrideKeyEvent"); 627 // dispatchKeyEvent().
571 boolean result = mWebViewClient.shouldOverrideKeyEvent(mWebView, event); 628 if (!ContentViewClient.shouldPropagateKey(event.getKeyCode())) retur n true;
572 TraceEvent.end(); 629 if (TRACE) Log.d(TAG, "shouldOverrideKeyEvent");
573 return result; 630 boolean result = mWebViewClient.shouldOverrideKeyEvent(mWebView, eve nt);
631 return result;
632 } finally {
633 TraceEvent.end("WebViewContentsClientAdapter.shouldOverrideKeyEvent" );
634 }
574 } 635 }
575 636
576 /** 637 /**
577 * @see ContentViewClient#onStartContentIntent(Context, String) 638 * @see ContentViewClient#onStartContentIntent(Context, String)
578 * Callback when detecting a click on a content link. 639 * Callback when detecting a click on a content link.
579 */ 640 */
580 // TODO: Delete this method when removed from base class. 641 // TODO: Delete this method when removed from base class.
581 public void onStartContentIntent(Context context, String contentUrl) { 642 public void onStartContentIntent(Context context, String contentUrl) {
582 TraceEvent.begin(); 643 try {
583 if (TRACE) Log.d(TAG, "shouldOverrideUrlLoading=" + contentUrl); 644 TraceEvent.begin("WebViewContentsClientAdapter.onStartContentIntent" );
584 mWebViewClient.shouldOverrideUrlLoading(mWebView, contentUrl); 645 if (TRACE) Log.d(TAG, "shouldOverrideUrlLoading=" + contentUrl);
585 TraceEvent.end(); 646 mWebViewClient.shouldOverrideUrlLoading(mWebView, contentUrl);
647 } finally {
648 TraceEvent.end("WebViewContentsClientAdapter.onStartContentIntent");
649 }
586 } 650 }
587 651
588 @Override 652 @Override
589 public void onGeolocationPermissionsShowPrompt(String origin, 653 public void onGeolocationPermissionsShowPrompt(String origin,
590 GeolocationPermissions.Callback callback) { 654 GeolocationPermissions.Callback callback) {
591 TraceEvent.begin(); 655 try {
592 if (mWebChromeClient != null) { 656 TraceEvent.begin("WebViewContentsClientAdapter.onGeolocationPermissi onsShowPrompt");
593 if (TRACE) Log.d(TAG, "onGeolocationPermissionsShowPrompt"); 657 if (mWebChromeClient != null) {
594 mWebChromeClient.onGeolocationPermissionsShowPrompt(origin, callback ); 658 if (TRACE) Log.d(TAG, "onGeolocationPermissionsShowPrompt");
659 mWebChromeClient.onGeolocationPermissionsShowPrompt(origin, call back);
660 }
661 } finally {
662 TraceEvent.end("WebViewContentsClientAdapter.onGeolocationPermission sShowPrompt");
595 } 663 }
596 TraceEvent.end();
597 } 664 }
598 665
599 @Override 666 @Override
600 public void onGeolocationPermissionsHidePrompt() { 667 public void onGeolocationPermissionsHidePrompt() {
601 TraceEvent.begin(); 668 try {
602 if (mWebChromeClient != null) { 669 TraceEvent.begin("WebViewContentsClientAdapter.onGeolocationPermissi onsHidePrompt");
603 if (TRACE) Log.d(TAG, "onGeolocationPermissionsHidePrompt"); 670 if (mWebChromeClient != null) {
604 mWebChromeClient.onGeolocationPermissionsHidePrompt(); 671 if (TRACE) Log.d(TAG, "onGeolocationPermissionsHidePrompt");
672 mWebChromeClient.onGeolocationPermissionsHidePrompt();
673 }
674 } finally {
675 TraceEvent.end("WebViewContentsClientAdapter.onGeolocationPermission sHidePrompt");
605 } 676 }
606 TraceEvent.end();
607 } 677 }
608 678
609 @Override 679 @Override
610 public void onPermissionRequest(AwPermissionRequest permissionRequest) { 680 public void onPermissionRequest(AwPermissionRequest permissionRequest) {
611 TraceEvent.begin(); 681 try {
612 if (mWebChromeClient != null) { 682 TraceEvent.begin("WebViewContentsClientAdapter.onPermissionRequest") ;
613 if (TRACE) Log.d(TAG, "onPermissionRequest"); 683 if (mWebChromeClient != null) {
614 if (mOngoingPermissionRequests == null) { 684 if (TRACE) Log.d(TAG, "onPermissionRequest");
615 mOngoingPermissionRequests = new WeakHashMap<AwPermissionRequest , 685 if (mOngoingPermissionRequests == null) {
616 WeakReference<PermissionRequestAdapter>>(); 686 mOngoingPermissionRequests = new WeakHashMap<AwPermissionReq uest,
687 WeakReference<PermissionRequestAdapter>>();
688 }
689 PermissionRequestAdapter adapter = new PermissionRequestAdapter( permissionRequest);
690 mOngoingPermissionRequests.put(
691 permissionRequest, new WeakReference<PermissionRequestAd apter>(adapter));
692 mWebChromeClient.onPermissionRequest(adapter);
693 } else {
694 // By default, we deny the permission.
695 permissionRequest.deny();
617 } 696 }
618 PermissionRequestAdapter adapter = new PermissionRequestAdapter(perm issionRequest); 697 } finally {
619 mOngoingPermissionRequests.put( 698 TraceEvent.end("WebViewContentsClientAdapter.onPermissionRequest");
620 permissionRequest, new WeakReference<PermissionRequestAdapte r>(adapter));
621 mWebChromeClient.onPermissionRequest(adapter);
622 } else {
623 // By default, we deny the permission.
624 permissionRequest.deny();
625 } 699 }
626 TraceEvent.end();
627 } 700 }
628 701
629 @Override 702 @Override
630 public void onPermissionRequestCanceled(AwPermissionRequest permissionReques t) { 703 public void onPermissionRequestCanceled(AwPermissionRequest permissionReques t) {
631 TraceEvent.begin(); 704 try {
632 if (mWebChromeClient != null && mOngoingPermissionRequests != null) { 705 TraceEvent.begin("WebViewContentsClientAdapter.onPermissionRequestCa nceled");
633 if (TRACE) Log.d(TAG, "onPermissionRequestCanceled"); 706 if (mWebChromeClient != null && mOngoingPermissionRequests != null) {
634 WeakReference<PermissionRequestAdapter> weakRef = 707 if (TRACE) Log.d(TAG, "onPermissionRequestCanceled");
635 mOngoingPermissionRequests.get(permissionRequest); 708 WeakReference<PermissionRequestAdapter> weakRef =
636 // We don't hold strong reference to PermissionRequestAdpater and do n't expect the 709 mOngoingPermissionRequests.get(permissionRequest);
637 // user only holds weak reference to it either, if so, user has no w ay to call 710 // We don't hold strong reference to PermissionRequestAdpater an d don't expect the
638 // grant()/deny(), and no need to be notified the cancellation of re quest. 711 // user only holds weak reference to it either, if so, user has no way to call
639 if (weakRef != null) { 712 // grant()/deny(), and no need to be notified the cancellation o f request.
640 PermissionRequestAdapter adapter = weakRef.get(); 713 if (weakRef != null) {
641 if (adapter != null) mWebChromeClient.onPermissionRequestCancele d(adapter); 714 PermissionRequestAdapter adapter = weakRef.get();
715 if (adapter != null) mWebChromeClient.onPermissionRequestCan celed(adapter);
716 }
642 } 717 }
718 } finally {
719 TraceEvent.end("WebViewContentsClientAdapter.onPermissionRequestCanc eled");
643 } 720 }
644 TraceEvent.end();
645 } 721 }
646 722
647 private static class JsPromptResultReceiverAdapter implements JsResult.Resul tReceiver { 723 private static class JsPromptResultReceiverAdapter implements JsResult.Resul tReceiver {
648 private JsPromptResultReceiver mChromePromptResultReceiver; 724 private JsPromptResultReceiver mChromePromptResultReceiver;
649 private JsResultReceiver mChromeResultReceiver; 725 private JsResultReceiver mChromeResultReceiver;
650 // We hold onto the JsPromptResult here, just to avoid the need to downc ast 726 // We hold onto the JsPromptResult here, just to avoid the need to downc ast
651 // in onJsResultComplete. 727 // in onJsResultComplete.
652 private final JsPromptResult mPromptResult = new JsPromptResult(this); 728 private final JsPromptResult mPromptResult = new JsPromptResult(this);
653 729
654 public JsPromptResultReceiverAdapter(JsPromptResultReceiver receiver) { 730 public JsPromptResultReceiverAdapter(JsPromptResultReceiver receiver) {
(...skipping 21 matching lines...) Expand all
676 mChromeResultReceiver.confirm(); 752 mChromeResultReceiver.confirm();
677 } else { 753 } else {
678 mChromeResultReceiver.cancel(); 754 mChromeResultReceiver.cancel();
679 } 755 }
680 } 756 }
681 } 757 }
682 } 758 }
683 759
684 @Override 760 @Override
685 public void handleJsAlert(String url, String message, JsResultReceiver recei ver) { 761 public void handleJsAlert(String url, String message, JsResultReceiver recei ver) {
686 TraceEvent.begin(); 762 try {
687 if (mWebChromeClient != null) { 763 TraceEvent.begin("WebViewContentsClientAdapter.handleJsAlert");
688 final JsPromptResult res = 764 if (mWebChromeClient != null) {
689 new JsPromptResultReceiverAdapter(receiver).getPromptResult( ); 765 final JsPromptResult res =
690 if (TRACE) Log.d(TAG, "onJsAlert"); 766 new JsPromptResultReceiverAdapter(receiver).getPromptRes ult();
691 if (!mWebChromeClient.onJsAlert(mWebView, url, message, res)) { 767 if (TRACE) Log.d(TAG, "onJsAlert");
692 new JsDialogHelper(res, JsDialogHelper.ALERT, null, message, url ) 768 if (!mWebChromeClient.onJsAlert(mWebView, url, message, res)) {
693 .showDialog(mContext); 769 new JsDialogHelper(res, JsDialogHelper.ALERT, null, message, url)
770 .showDialog(mContext);
771 }
772 } else {
773 receiver.cancel();
694 } 774 }
695 } else { 775 } finally {
696 receiver.cancel(); 776 TraceEvent.end("WebViewContentsClientAdapter.handleJsAlert");
697 } 777 }
698 TraceEvent.end();
699 } 778 }
700 779
701 @Override 780 @Override
702 public void handleJsBeforeUnload(String url, String message, JsResultReceive r receiver) { 781 public void handleJsBeforeUnload(String url, String message, JsResultReceive r receiver) {
703 TraceEvent.begin(); 782 try {
704 if (mWebChromeClient != null) { 783 TraceEvent.begin("WebViewContentsClientAdapter.handleJsBeforeUnload" );
705 final JsPromptResult res = 784 if (mWebChromeClient != null) {
706 new JsPromptResultReceiverAdapter(receiver).getPromptResult( ); 785 final JsPromptResult res =
707 if (TRACE) Log.d(TAG, "onJsBeforeUnload"); 786 new JsPromptResultReceiverAdapter(receiver).getPromptRes ult();
708 if (!mWebChromeClient.onJsBeforeUnload(mWebView, url, message, res)) { 787 if (TRACE) Log.d(TAG, "onJsBeforeUnload");
709 new JsDialogHelper(res, JsDialogHelper.UNLOAD, null, message, ur l) 788 if (!mWebChromeClient.onJsBeforeUnload(mWebView, url, message, r es)) {
710 .showDialog(mContext); 789 new JsDialogHelper(res, JsDialogHelper.UNLOAD, null, message , url)
790 .showDialog(mContext);
791 }
792 } else {
793 receiver.cancel();
711 } 794 }
712 } else { 795 } finally {
713 receiver.cancel(); 796 TraceEvent.end("WebViewContentsClientAdapter.handleJsBeforeUnload");
714 } 797 }
715 TraceEvent.end();
716 } 798 }
717 799
718 @Override 800 @Override
719 public void handleJsConfirm(String url, String message, JsResultReceiver rec eiver) { 801 public void handleJsConfirm(String url, String message, JsResultReceiver rec eiver) {
720 TraceEvent.begin(); 802 try {
721 if (mWebChromeClient != null) { 803 TraceEvent.begin("WebViewContentsClientAdapter.handleJsConfirm");
722 final JsPromptResult res = 804 if (mWebChromeClient != null) {
723 new JsPromptResultReceiverAdapter(receiver).getPromptResult( ); 805 final JsPromptResult res =
724 if (TRACE) Log.d(TAG, "onJsConfirm"); 806 new JsPromptResultReceiverAdapter(receiver).getPromptRes ult();
725 if (!mWebChromeClient.onJsConfirm(mWebView, url, message, res)) { 807 if (TRACE) Log.d(TAG, "onJsConfirm");
726 new JsDialogHelper(res, JsDialogHelper.CONFIRM, null, message, u rl) 808 if (!mWebChromeClient.onJsConfirm(mWebView, url, message, res)) {
727 .showDialog(mContext); 809 new JsDialogHelper(res, JsDialogHelper.CONFIRM, null, messag e, url)
810 .showDialog(mContext);
811 }
812 } else {
813 receiver.cancel();
728 } 814 }
729 } else { 815 } finally {
730 receiver.cancel(); 816 TraceEvent.end("WebViewContentsClientAdapter.handleJsConfirm");
731 } 817 }
732 TraceEvent.end();
733 } 818 }
734 819
735 @Override 820 @Override
736 public void handleJsPrompt(String url, String message, String defaultValue, 821 public void handleJsPrompt(String url, String message, String defaultValue,
737 JsPromptResultReceiver receiver) { 822 JsPromptResultReceiver receiver) {
738 TraceEvent.begin(); 823 try {
739 if (mWebChromeClient != null) { 824 TraceEvent.begin("WebViewContentsClientAdapter.handleJsPrompt");
740 final JsPromptResult res = 825 if (mWebChromeClient != null) {
741 new JsPromptResultReceiverAdapter(receiver).getPromptResult( ); 826 final JsPromptResult res =
742 if (TRACE) Log.d(TAG, "onJsPrompt"); 827 new JsPromptResultReceiverAdapter(receiver).getPromptRes ult();
743 if (!mWebChromeClient.onJsPrompt(mWebView, url, message, defaultValu e, res)) { 828 if (TRACE) Log.d(TAG, "onJsPrompt");
744 new JsDialogHelper(res, JsDialogHelper.PROMPT, defaultValue, mes sage, url) 829 if (!mWebChromeClient.onJsPrompt(mWebView, url, message, default Value, res)) {
745 .showDialog(mContext); 830 new JsDialogHelper(res, JsDialogHelper.PROMPT, defaultValue, message, url)
831 .showDialog(mContext);
832 }
833 } else {
834 receiver.cancel();
746 } 835 }
747 } else { 836 } finally {
748 receiver.cancel(); 837 TraceEvent.end("WebViewContentsClientAdapter.handleJsPrompt");
749 } 838 }
750 TraceEvent.end();
751 } 839 }
752 840
753 @Override 841 @Override
754 public void onReceivedHttpAuthRequest(AwHttpAuthHandler handler, String host , String realm) { 842 public void onReceivedHttpAuthRequest(AwHttpAuthHandler handler, String host , String realm) {
755 TraceEvent.begin(); 843 try {
756 if (TRACE) Log.d(TAG, "onReceivedHttpAuthRequest=" + host); 844 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedHttpAuthReq uest");
757 mWebViewClient.onReceivedHttpAuthRequest( 845 if (TRACE) Log.d(TAG, "onReceivedHttpAuthRequest=" + host);
758 mWebView, new AwHttpAuthHandlerAdapter(handler), host, realm); 846 mWebViewClient.onReceivedHttpAuthRequest(
759 TraceEvent.end(); 847 mWebView, new AwHttpAuthHandlerAdapter(handler), host, realm );
848 } finally {
849 TraceEvent.end("WebViewContentsClientAdapter.onReceivedHttpAuthReque st");
850 }
760 } 851 }
761 852
762 @Override 853 @Override
763 public void onReceivedSslError(final ValueCallback<Boolean> callback, SslErr or error) { 854 public void onReceivedSslError(final ValueCallback<Boolean> callback, SslErr or error) {
764 SslErrorHandler handler = new SslErrorHandler() { 855 try {
765 @Override 856 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedSslError");
766 public void proceed() { 857 SslErrorHandler handler = new SslErrorHandler() {
767 callback.onReceiveValue(true); 858 @Override
768 } 859 public void proceed() {
769 @Override 860 callback.onReceiveValue(true);
770 public void cancel() { 861 }
771 callback.onReceiveValue(false); 862 @Override
772 } 863 public void cancel() {
773 }; 864 callback.onReceiveValue(false);
774 TraceEvent.begin(); 865 }
775 if (TRACE) Log.d(TAG, "onReceivedSslError"); 866 };
776 mWebViewClient.onReceivedSslError(mWebView, handler, error); 867 if (TRACE) Log.d(TAG, "onReceivedSslError");
777 TraceEvent.end(); 868 mWebViewClient.onReceivedSslError(mWebView, handler, error);
869 } finally {
870 TraceEvent.end("WebViewContentsClientAdapter.onReceivedSslError");
871 }
778 } 872 }
779 873
780 private static class ClientCertRequestImpl extends ClientCertRequest { 874 private static class ClientCertRequestImpl extends ClientCertRequest {
781 private final AwContentsClientBridge.ClientCertificateRequestCallback mC allback; 875 private final AwContentsClientBridge.ClientCertificateRequestCallback mC allback;
782 private final String[] mKeyTypes; 876 private final String[] mKeyTypes;
783 private final Principal[] mPrincipals; 877 private final Principal[] mPrincipals;
784 private final String mHost; 878 private final String mHost;
785 private final int mPort; 879 private final int mPort;
786 880
787 public ClientCertRequestImpl( 881 public ClientCertRequestImpl(
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 public void cancel() { 924 public void cancel() {
831 mCallback.cancel(); 925 mCallback.cancel();
832 } 926 }
833 } 927 }
834 928
835 @Override 929 @Override
836 public void onReceivedClientCertRequest( 930 public void onReceivedClientCertRequest(
837 AwContentsClientBridge.ClientCertificateRequestCallback callback, St ring[] keyTypes, 931 AwContentsClientBridge.ClientCertificateRequestCallback callback, St ring[] keyTypes,
838 Principal[] principals, String host, int port) { 932 Principal[] principals, String host, int port) {
839 if (TRACE) Log.d(TAG, "onReceivedClientCertRequest"); 933 if (TRACE) Log.d(TAG, "onReceivedClientCertRequest");
840 TraceEvent.begin(); 934 try {
841 final ClientCertRequestImpl request = 935 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedClientCertR equest");
842 new ClientCertRequestImpl(callback, keyTypes, principals, host, port); 936 final ClientCertRequestImpl request =
843 mWebViewClient.onReceivedClientCertRequest(mWebView, request); 937 new ClientCertRequestImpl(callback, keyTypes, principals, ho st, port);
844 TraceEvent.end(); 938 mWebViewClient.onReceivedClientCertRequest(mWebView, request);
939 } finally {
940 TraceEvent.end("WebViewContentsClientAdapter.onReceivedClientCertReq uest");
941 }
845 } 942 }
846 943
847 @Override 944 @Override
848 public void onReceivedLoginRequest(String realm, String account, String args ) { 945 public void onReceivedLoginRequest(String realm, String account, String args ) {
849 TraceEvent.begin(); 946 try {
850 if (TRACE) Log.d(TAG, "onReceivedLoginRequest=" + realm); 947 TraceEvent.begin("WebViewContentsClientAdapter.onReceivedLoginReques t");
851 mWebViewClient.onReceivedLoginRequest(mWebView, realm, account, args); 948 if (TRACE) Log.d(TAG, "onReceivedLoginRequest=" + realm);
852 TraceEvent.end(); 949 mWebViewClient.onReceivedLoginRequest(mWebView, realm, account, args );
950 } finally {
951 TraceEvent.end("WebViewContentsClientAdapter.onReceivedLoginRequest" );
952 }
853 } 953 }
854 954
855 @Override 955 @Override
856 public void onFormResubmission(Message dontResend, Message resend) { 956 public void onFormResubmission(Message dontResend, Message resend) {
857 TraceEvent.begin(); 957 try {
858 if (TRACE) Log.d(TAG, "onFormResubmission"); 958 TraceEvent.begin("WebViewContentsClientAdapter.onFormResubmission");
859 mWebViewClient.onFormResubmission(mWebView, dontResend, resend); 959 if (TRACE) Log.d(TAG, "onFormResubmission");
860 TraceEvent.end(); 960 mWebViewClient.onFormResubmission(mWebView, dontResend, resend);
961 } finally {
962 TraceEvent.end("WebViewContentsClientAdapter.onFormResubmission");
963 }
861 } 964 }
862 965
863 @Override 966 @Override
864 public void onDownloadStart( 967 public void onDownloadStart(
865 String url, 968 String url,
866 String userAgent, 969 String userAgent,
867 String contentDisposition, 970 String contentDisposition,
868 String mimeType, 971 String mimeType,
869 long contentLength) { 972 long contentLength) {
870 if (mDownloadListener != null) { 973 try {
871 TraceEvent.begin(); 974 TraceEvent.begin("WebViewContentsClientAdapter.onDownloadStart");
872 if (TRACE) Log.d(TAG, "onDownloadStart"); 975 if (mDownloadListener != null) {
873 mDownloadListener.onDownloadStart( 976 if (TRACE) Log.d(TAG, "onDownloadStart");
874 url, userAgent, contentDisposition, mimeType, contentLength) ; 977 mDownloadListener.onDownloadStart(
875 TraceEvent.end(); 978 url, userAgent, contentDisposition, mimeType, contentLen gth);
979 }
980 } finally {
981 TraceEvent.end("WebViewContentsClientAdapter.onDownloadStart");
876 } 982 }
877 } 983 }
878 984
879 @Override 985 @Override
880 public void showFileChooser(final ValueCallback<String[]> uploadFileCallback , 986 public void showFileChooser(final ValueCallback<String[]> uploadFileCallback ,
881 final AwContentsClient.FileChooserParams fileChooserParams) { 987 final AwContentsClient.FileChooserParams fileChooserParams) {
882 if (mWebChromeClient == null) { 988 try {
883 uploadFileCallback.onReceiveValue(null); 989 TraceEvent.begin("WebViewContentsClientAdapter.showFileChooser");
884 return; 990 if (mWebChromeClient == null) {
991 uploadFileCallback.onReceiveValue(null);
992 return;
993 }
994 FileChooserParamsAdapter adapter =
995 new FileChooserParamsAdapter(fileChooserParams, mContext);
996 if (TRACE) Log.d(TAG, "showFileChooser");
997 ValueCallback<Uri[]> callbackAdapter = new ValueCallback<Uri[]>() {
998 private boolean mCompleted;
999 @Override
1000 public void onReceiveValue(Uri[] uriList) {
1001 if (mCompleted) {
1002 throw new IllegalStateException(
1003 "showFileChooser result was already called");
1004 }
1005 mCompleted = true;
1006 String s[] = null;
1007 if (uriList != null) {
1008 s = new String[uriList.length];
1009 for (int i = 0; i < uriList.length; i++) {
1010 s[i] = uriList[i].toString();
1011 }
1012 }
1013 uploadFileCallback.onReceiveValue(s);
1014 }
1015 };
1016
1017 // Invoke the new callback introduced in Lollipop. If the app handle s
1018 // it, we're done here.
1019 if (mWebChromeClient.onShowFileChooser(mWebView, callbackAdapter, ad apter)) {
1020 return;
1021 }
1022
1023 // If the app did not handle it and we are running on Lollipop or ne wer, then
1024 // abort.
1025 if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_ CODES.LOLLIPOP) {
1026 uploadFileCallback.onReceiveValue(null);
1027 return;
1028 }
1029
1030 // Otherwise, for older apps, attempt to invoke the legacy (hidden) API for
1031 // backwards compatibility.
1032 ValueCallback<Uri> innerCallback = new ValueCallback<Uri>() {
1033 private boolean mCompleted;
1034 @Override
1035 public void onReceiveValue(Uri uri) {
1036 if (mCompleted) {
1037 throw new IllegalStateException(
1038 "showFileChooser result was already called");
1039 }
1040 mCompleted = true;
1041 uploadFileCallback.onReceiveValue(
1042 uri == null ? null : new String[] {uri.toString()});
1043 }
1044 };
1045 if (TRACE) Log.d(TAG, "openFileChooser");
1046 mWebChromeClient.openFileChooser(
1047 innerCallback,
1048 fileChooserParams.acceptTypes,
1049 fileChooserParams.capture ? "*" : "");
1050 } finally {
1051 TraceEvent.end("WebViewContentsClientAdapter.showFileChooser");
885 } 1052 }
886 TraceEvent.begin();
887 FileChooserParamsAdapter adapter =
888 new FileChooserParamsAdapter(fileChooserParams, mContext);
889 if (TRACE) Log.d(TAG, "showFileChooser");
890 ValueCallback<Uri[]> callbackAdapter = new ValueCallback<Uri[]>() {
891 private boolean mCompleted;
892 @Override
893 public void onReceiveValue(Uri[] uriList) {
894 if (mCompleted) {
895 throw new IllegalStateException("showFileChooser result was already called");
896 }
897 mCompleted = true;
898 String s[] = null;
899 if (uriList != null) {
900 s = new String[uriList.length];
901 for (int i = 0; i < uriList.length; i++) {
902 s[i] = uriList[i].toString();
903 }
904 }
905 uploadFileCallback.onReceiveValue(s);
906 }
907 };
908
909 // Invoke the new callback introduced in Lollipop. If the app handles
910 // it, we're done here.
911 if (mWebChromeClient.onShowFileChooser(mWebView, callbackAdapter, adapte r)) {
912 return;
913 }
914
915 // If the app did not handle it and we are running on Lollipop or newer, then
916 // abort.
917 if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODE S.LOLLIPOP) {
918 uploadFileCallback.onReceiveValue(null);
919 return;
920 }
921
922 // Otherwise, for older apps, attempt to invoke the legacy (hidden) API for
923 // backwards compatibility.
924 ValueCallback<Uri> innerCallback = new ValueCallback<Uri>() {
925 private boolean mCompleted;
926 @Override
927 public void onReceiveValue(Uri uri) {
928 if (mCompleted) {
929 throw new IllegalStateException("showFileChooser result was already called");
930 }
931 mCompleted = true;
932 uploadFileCallback.onReceiveValue(
933 uri == null ? null : new String[] {uri.toString()});
934 }
935 };
936 if (TRACE) Log.d(TAG, "openFileChooser");
937 mWebChromeClient.openFileChooser(
938 innerCallback, fileChooserParams.acceptTypes, fileChooserParams. capture ? "*" : "");
939 TraceEvent.end();
940 } 1053 }
941 1054
942 @Override 1055 @Override
943 public void onScaleChangedScaled(float oldScale, float newScale) { 1056 public void onScaleChangedScaled(float oldScale, float newScale) {
944 TraceEvent.begin(); 1057 try {
945 if (TRACE) Log.d(TAG, " onScaleChangedScaled"); 1058 TraceEvent.begin("WebViewContentsClientAdapter.onScaleChangedScaled" );
946 mWebViewClient.onScaleChanged(mWebView, oldScale, newScale); 1059 if (TRACE) Log.d(TAG, " onScaleChangedScaled");
947 TraceEvent.end(); 1060 mWebViewClient.onScaleChanged(mWebView, oldScale, newScale);
1061 } finally {
1062 TraceEvent.end("WebViewContentsClientAdapter.onScaleChangedScaled");
1063 }
948 } 1064 }
949 1065
950 @Override 1066 @Override
951 public void onShowCustomView(View view, CustomViewCallback cb) { 1067 public void onShowCustomView(View view, CustomViewCallback cb) {
952 TraceEvent.begin(); 1068 try {
953 if (mWebChromeClient != null) { 1069 TraceEvent.begin("WebViewContentsClientAdapter.onShowCustomView");
954 if (TRACE) Log.d(TAG, "onShowCustomView"); 1070 if (mWebChromeClient != null) {
955 mWebChromeClient.onShowCustomView(view, cb); 1071 if (TRACE) Log.d(TAG, "onShowCustomView");
1072 mWebChromeClient.onShowCustomView(view, cb);
1073 }
1074 } finally {
1075 TraceEvent.end("WebViewContentsClientAdapter.onShowCustomView");
956 } 1076 }
957 TraceEvent.end();
958 } 1077 }
959 1078
960 @Override 1079 @Override
961 public void onHideCustomView() { 1080 public void onHideCustomView() {
962 TraceEvent.begin(); 1081 try {
963 if (mWebChromeClient != null) { 1082 TraceEvent.begin("WebViewContentsClientAdapter.onHideCustomView");
964 if (TRACE) Log.d(TAG, "onHideCustomView"); 1083 if (mWebChromeClient != null) {
965 mWebChromeClient.onHideCustomView(); 1084 if (TRACE) Log.d(TAG, "onHideCustomView");
1085 mWebChromeClient.onHideCustomView();
1086 }
1087 } finally {
1088 TraceEvent.end("WebViewContentsClientAdapter.onHideCustomView");
966 } 1089 }
967 TraceEvent.end();
968 } 1090 }
969 1091
970 @Override 1092 @Override
971 protected View getVideoLoadingProgressView() { 1093 protected View getVideoLoadingProgressView() {
972 TraceEvent.begin(); 1094 try {
973 View result; 1095 TraceEvent.begin("WebViewContentsClientAdapter.getVideoLoadingProgre ssView");
974 if (mWebChromeClient != null) { 1096 View result;
975 if (TRACE) Log.d(TAG, "getVideoLoadingProgressView"); 1097 if (mWebChromeClient != null) {
976 result = mWebChromeClient.getVideoLoadingProgressView(); 1098 if (TRACE) Log.d(TAG, "getVideoLoadingProgressView");
977 } else { 1099 result = mWebChromeClient.getVideoLoadingProgressView();
978 result = null; 1100 } else {
1101 result = null;
1102 }
1103 return result;
1104 } finally {
1105 TraceEvent.end("WebViewContentsClientAdapter.getVideoLoadingProgress View");
979 } 1106 }
980 TraceEvent.end();
981 return result;
982 } 1107 }
983 1108
984 @Override 1109 @Override
985 public Bitmap getDefaultVideoPoster() { 1110 public Bitmap getDefaultVideoPoster() {
986 TraceEvent.begin(); 1111 try {
987 Bitmap result = null; 1112 TraceEvent.begin("WebViewContentsClientAdapter.getDefaultVideoPoster ");
988 if (mWebChromeClient != null) { 1113 Bitmap result = null;
989 if (TRACE) Log.d(TAG, "getDefaultVideoPoster"); 1114 if (mWebChromeClient != null) {
990 result = mWebChromeClient.getDefaultVideoPoster(); 1115 if (TRACE) Log.d(TAG, "getDefaultVideoPoster");
1116 result = mWebChromeClient.getDefaultVideoPoster();
1117 }
1118 if (result == null) {
1119 // The ic_media_video_poster icon is transparent so we need to d raw it on a gray
1120 // background.
1121 Bitmap poster = BitmapFactory.decodeResource(
1122 mContext.getResources(), R.drawable.ic_media_video_poste r);
1123 result = Bitmap.createBitmap(
1124 poster.getWidth(), poster.getHeight(), poster.getConfig( ));
1125 result.eraseColor(Color.GRAY);
1126 Canvas canvas = new Canvas(result);
1127 canvas.drawBitmap(poster, 0f, 0f, null);
1128 }
1129 return result;
1130 } finally {
1131 TraceEvent.end("WebViewContentsClientAdapter.getDefaultVideoPoster") ;
991 } 1132 }
992 if (result == null) {
993 // The ic_media_video_poster icon is transparent so we need to draw it on a gray
994 // background.
995 Bitmap poster = BitmapFactory.decodeResource(
996 mContext.getResources(), R.drawable.ic_media_video_poster);
997 result = Bitmap.createBitmap(poster.getWidth(), poster.getHeight(), poster.getConfig());
998 result.eraseColor(Color.GRAY);
999 Canvas canvas = new Canvas(result);
1000 canvas.drawBitmap(poster, 0f, 0f, null);
1001 }
1002 TraceEvent.end();
1003 return result;
1004 } 1133 }
1005 1134
1006 // TODO: Move to upstream. 1135 // TODO: Move to upstream.
1007 private static class AwHttpAuthHandlerAdapter extends android.webkit.HttpAut hHandler { 1136 private static class AwHttpAuthHandlerAdapter extends android.webkit.HttpAut hHandler {
1008 private AwHttpAuthHandler mAwHandler; 1137 private AwHttpAuthHandler mAwHandler;
1009 1138
1010 public AwHttpAuthHandlerAdapter(AwHttpAuthHandler awHandler) { 1139 public AwHttpAuthHandlerAdapter(AwHttpAuthHandler awHandler) {
1011 mAwHandler = awHandler; 1140 mAwHandler = awHandler;
1012 } 1141 }
1013 1142
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 else 1229 else
1101 mAwPermissionRequest.deny(); 1230 mAwPermissionRequest.deny();
1102 } 1231 }
1103 1232
1104 @Override 1233 @Override
1105 public void deny() { 1234 public void deny() {
1106 mAwPermissionRequest.deny(); 1235 mAwPermissionRequest.deny();
1107 } 1236 }
1108 } 1237 }
1109 } 1238 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698