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

Side by Side Diff: ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.mm

Issue 2912863005: Use MDCTypography instead of MDFRobotoFontLoader directly. (Closed)
Patch Set: Tentative fix for ManualTextFramerTest Created 3 years, 6 months 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
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.h" 5 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_view_controller.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/ios/ios_util.h" 9 #include "base/ios/ios_util.h"
10 #include "base/mac/scoped_cftyperef.h" 10 #include "base/mac/scoped_cftyperef.h"
11 #include "base/strings/sys_string_conversions.h" 11 #include "base/strings/sys_string_conversions.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #import "components/image_fetcher/ios/ios_image_data_fetcher_wrapper.h" 13 #import "components/image_fetcher/ios/ios_image_data_fetcher_wrapper.h"
14 #include "components/omnibox/browser/autocomplete_input.h" 14 #include "components/omnibox/browser/autocomplete_input.h"
15 #include "components/omnibox/browser/autocomplete_match.h" 15 #include "components/omnibox/browser/autocomplete_match.h"
16 #include "components/omnibox/browser/autocomplete_result.h" 16 #include "components/omnibox/browser/autocomplete_result.h"
17 #include "components/omnibox/browser/suggestion_answer.h" 17 #include "components/omnibox/browser/suggestion_answer.h"
18 #include "ios/chrome/browser/ui/animation_util.h" 18 #include "ios/chrome/browser/ui/animation_util.h"
19 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_row.h" 19 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_material_row.h"
20 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_view_ios.h" 20 #import "ios/chrome/browser/ui/omnibox/omnibox_popup_view_ios.h"
21 #include "ios/chrome/browser/ui/omnibox/omnibox_util.h" 21 #include "ios/chrome/browser/ui/omnibox/omnibox_util.h"
22 #import "ios/chrome/browser/ui/omnibox/truncating_attributed_label.h" 22 #import "ios/chrome/browser/ui/omnibox/truncating_attributed_label.h"
23 #include "ios/chrome/browser/ui/rtl_geometry.h" 23 #include "ios/chrome/browser/ui/rtl_geometry.h"
24 #include "ios/chrome/browser/ui/ui_util.h" 24 #include "ios/chrome/browser/ui/ui_util.h"
25 #import "ios/chrome/browser/ui/uikit_ui_util.h" 25 #import "ios/chrome/browser/ui/uikit_ui_util.h"
26 #include "ios/chrome/grit/ios_theme_resources.h" 26 #include "ios/chrome/grit/ios_theme_resources.h"
27 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h" 27 #import "ios/third_party/material_components_ios/src/components/Typography/src/M aterialTypography.h"
28 #import "ios/third_party/material_roboto_font_loader_ios/src/src/MaterialRobotoF ontLoader.h"
29 #include "net/base/escape.h" 28 #include "net/base/escape.h"
30 29
31 #if !defined(__has_feature) || !__has_feature(objc_arc) 30 #if !defined(__has_feature) || !__has_feature(objc_arc)
32 #error "This file requires ARC support." 31 #error "This file requires ARC support."
33 #endif 32 #endif
34 33
35 namespace { 34 namespace {
36 const int kRowCount = 6; 35 const int kRowCount = 6;
37 const CGFloat kRowHeight = 48.0; 36 const CGFloat kRowHeight = 48.0;
38 const CGFloat kAnswerRowHeight = 64.0; 37 const CGFloat kAnswerRowHeight = 64.0;
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 NSDictionary* attributes = nil; 464 NSDictionary* attributes = nil;
466 465
467 const id font = (id)NSFontAttributeName; 466 const id font = (id)NSFontAttributeName;
468 NSString* foregroundColor = (NSString*)NSForegroundColorAttributeName; 467 NSString* foregroundColor = (NSString*)NSForegroundColorAttributeName;
469 const id baselineOffset = (id)NSBaselineOffsetAttributeName; 468 const id baselineOffset = (id)NSBaselineOffsetAttributeName;
470 469
471 // Answer types, sizes and colors specified at http://goto.google.com/ais_api. 470 // Answer types, sizes and colors specified at http://goto.google.com/ais_api.
472 switch (type) { 471 switch (type) {
473 case SuggestionAnswer::TOP_ALIGNED: 472 case SuggestionAnswer::TOP_ALIGNED:
474 attributes = @{ 473 attributes = @{
475 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:12], 474 font : [[MDCTypography fontLoader] regularFontOfSize:12],
476 baselineOffset : @10.0f, 475 baselineOffset : @10.0f,
477 foregroundColor : [UIColor grayColor], 476 foregroundColor : [UIColor grayColor],
478 }; 477 };
479 break; 478 break;
480 case SuggestionAnswer::DESCRIPTION_POSITIVE: 479 case SuggestionAnswer::DESCRIPTION_POSITIVE:
481 attributes = @{ 480 attributes = @{
482 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:16], 481 font : [[MDCTypography fontLoader] regularFontOfSize:16],
483 foregroundColor : [UIColor colorWithRed:11 / 255.0 482 foregroundColor : [UIColor colorWithRed:11 / 255.0
484 green:128 / 255.0 483 green:128 / 255.0
485 blue:67 / 255.0 484 blue:67 / 255.0
486 alpha:1.0], 485 alpha:1.0],
487 }; 486 };
488 break; 487 break;
489 case SuggestionAnswer::DESCRIPTION_NEGATIVE: 488 case SuggestionAnswer::DESCRIPTION_NEGATIVE:
490 attributes = @{ 489 attributes = @{
491 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:16], 490 font : [[MDCTypography fontLoader] regularFontOfSize:16],
492 foregroundColor : [UIColor colorWithRed:197 / 255.0 491 foregroundColor : [UIColor colorWithRed:197 / 255.0
493 green:57 / 255.0 492 green:57 / 255.0
494 blue:41 / 255.0 493 blue:41 / 255.0
495 alpha:1.0], 494 alpha:1.0],
496 }; 495 };
497 break; 496 break;
498 case SuggestionAnswer::PERSONALIZED_SUGGESTION: 497 case SuggestionAnswer::PERSONALIZED_SUGGESTION:
499 attributes = @{ 498 attributes = @{
500 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:16], 499 font : [[MDCTypography fontLoader] regularFontOfSize:16],
501 }; 500 };
502 break; 501 break;
503 case SuggestionAnswer::ANSWER_TEXT_MEDIUM: 502 case SuggestionAnswer::ANSWER_TEXT_MEDIUM:
504 attributes = @{ 503 attributes = @{
505 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:20], 504 font : [[MDCTypography fontLoader] regularFontOfSize:20],
506 foregroundColor : [UIColor grayColor], 505 foregroundColor : [UIColor grayColor],
507 }; 506 };
508 break; 507 break;
509 case SuggestionAnswer::ANSWER_TEXT_LARGE: 508 case SuggestionAnswer::ANSWER_TEXT_LARGE:
510 attributes = @{ 509 attributes = @{
511 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:24], 510 font : [[MDCTypography fontLoader] regularFontOfSize:24],
512 foregroundColor : [UIColor grayColor], 511 foregroundColor : [UIColor grayColor],
513 }; 512 };
514 break; 513 break;
515 case SuggestionAnswer::SUGGESTION_SECONDARY_TEXT_SMALL: 514 case SuggestionAnswer::SUGGESTION_SECONDARY_TEXT_SMALL:
516 attributes = @{ 515 attributes = @{
517 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:12], 516 font : [[MDCTypography fontLoader] regularFontOfSize:12],
518 foregroundColor : [UIColor grayColor], 517 foregroundColor : [UIColor grayColor],
519 }; 518 };
520 break; 519 break;
521 case SuggestionAnswer::SUGGESTION_SECONDARY_TEXT_MEDIUM: 520 case SuggestionAnswer::SUGGESTION_SECONDARY_TEXT_MEDIUM:
522 attributes = @{ 521 attributes = @{
523 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:14], 522 font : [[MDCTypography fontLoader] regularFontOfSize:14],
524 foregroundColor : [UIColor grayColor], 523 foregroundColor : [UIColor grayColor],
525 }; 524 };
526 break; 525 break;
527 case SuggestionAnswer::SUGGESTION: 526 case SuggestionAnswer::SUGGESTION:
528 // Fall through. 527 // Fall through.
529 default: 528 default:
530 attributes = @{ 529 attributes = @{
531 font : [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:16], 530 font : [[MDCTypography fontLoader] regularFontOfSize:16],
532 }; 531 };
533 } 532 }
534 533
535 NSString* unescapedString = 534 NSString* unescapedString =
536 base::SysUTF16ToNSString(net::UnescapeForHTML(string)); 535 base::SysUTF16ToNSString(net::UnescapeForHTML(string));
537 // TODO(jdonnelly): Remove this tag stripping once the JSON parsing class 536 // TODO(jdonnelly): Remove this tag stripping once the JSON parsing class
538 // handles HTML tags. 537 // handles HTML tags.
539 unescapedString = [unescapedString stringByReplacingOccurrencesOfString:@"<b>" 538 unescapedString = [unescapedString stringByReplacingOccurrencesOfString:@"<b>"
540 withString:@""]; 539 withString:@""];
541 unescapedString = 540 unescapedString =
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 [[NSMutableAttributedString alloc] initWithString:text]; 689 [[NSMutableAttributedString alloc] initWithString:text];
691 690
692 // Set the base attributes to the default font and color. 691 // Set the base attributes to the default font and color.
693 NSDictionary* dict = @{ 692 NSDictionary* dict = @{
694 NSFontAttributeName : fontRef, 693 NSFontAttributeName : fontRef,
695 NSForegroundColorAttributeName : defaultColor, 694 NSForegroundColorAttributeName : defaultColor,
696 }; 695 };
697 [as addAttributes:dict range:NSMakeRange(0, [text length])]; 696 [as addAttributes:dict range:NSMakeRange(0, [text length])];
698 697
699 if (classifications != NULL) { 698 if (classifications != NULL) {
700 UIFont* boldFontRef = [[MDFRobotoFontLoader sharedInstance] 699 UIFont* boldFontRef =
701 mediumFontOfSize:fontRef.pointSize]; 700 [[MDCTypography fontLoader] mediumFontOfSize:fontRef.pointSize];
702 701
703 for (ACMatchClassifications::const_iterator i = classifications->begin(); 702 for (ACMatchClassifications::const_iterator i = classifications->begin();
704 i != classifications->end(); ++i) { 703 i != classifications->end(); ++i) {
705 const BOOL isLast = (i + 1) == classifications->end(); 704 const BOOL isLast = (i + 1) == classifications->end();
706 const size_t nextOffset = (isLast ? [text length] : (i + 1)->offset); 705 const size_t nextOffset = (isLast ? [text length] : (i + 1)->offset);
707 const NSInteger location = static_cast<NSInteger>(i->offset); 706 const NSInteger location = static_cast<NSInteger>(i->offset);
708 const NSInteger length = static_cast<NSInteger>(nextOffset - i->offset); 707 const NSInteger length = static_cast<NSInteger>(nextOffset - i->offset);
709 // Guard against bad, off-the-end classification ranges due to 708 // Guard against bad, off-the-end classification ranges due to
710 // crbug.com/121703 and crbug.com/131370. 709 // crbug.com/121703 and crbug.com/131370.
711 if (i->offset + length > [text length] || length <= 0) 710 if (i->offset + length > [text length] || length <= 0)
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 // The delete button never disappears if you don't call this after a tap. 786 // The delete button never disappears if you don't call this after a tap.
788 // It doesn't seem to be required anywhere else. 787 // It doesn't seem to be required anywhere else.
789 [_rows[indexPath.row] prepareForReuse]; 788 [_rows[indexPath.row] prepareForReuse];
790 const AutocompleteMatch& match = 789 const AutocompleteMatch& match =
791 ((const AutocompleteResult&)_currentResult).match_at(indexPath.row); 790 ((const AutocompleteResult&)_currentResult).match_at(indexPath.row);
792 _popupView->DeleteMatch(match); 791 _popupView->DeleteMatch(match);
793 } 792 }
794 } 793 }
795 794
796 @end 795 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698