UI polish for favicons in tabgrid

Displaying favicons with clear background, shrinking down to 16pt, and
changing default icon.

Bug: 860245
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I75e75d0bb21784441561e79a623002fdc2c95ae8
Reviewed-on: https://chromium-review.googlesource.com/1151111
Commit-Queue: Elodie Banel <lod@chromium.org>
Reviewed-by: Mark Cogan <marq@chromium.org>
Reviewed-by: Gauthier Ambard <gambard@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578313}
diff --git a/ios/chrome/browser/ui/favicon/BUILD.gn b/ios/chrome/browser/ui/favicon/BUILD.gn
index 4217b3b..71068c0b 100644
--- a/ios/chrome/browser/ui/favicon/BUILD.gn
+++ b/ios/chrome/browser/ui/favicon/BUILD.gn
@@ -12,6 +12,8 @@
   deps = [
     "resources:default_favicon",
     "resources:default_world_favicon",
+    "resources:default_world_favicon_incognito",
+    "resources:default_world_favicon_regular",
     "//base",
     "//components/favicon/core",
     "//components/favicon_base",
diff --git a/ios/chrome/browser/ui/favicon/resources/BUILD.gn b/ios/chrome/browser/ui/favicon/resources/BUILD.gn
index e169523..aa6b381 100644
--- a/ios/chrome/browser/ui/favicon/resources/BUILD.gn
+++ b/ios/chrome/browser/ui/favicon/resources/BUILD.gn
@@ -13,6 +13,24 @@
   ]
 }
 
+imageset("default_world_favicon_incognito") {
+  sources = [
+    "default_world_favicon_incognito.imageset/Contents.json",
+    "default_world_favicon_incognito.imageset/default_world_favicon_incognito.png",
+    "default_world_favicon_incognito.imageset/default_world_favicon_incognito@2x.png",
+    "default_world_favicon_incognito.imageset/default_world_favicon_incognito@3x.png",
+  ]
+}
+
+imageset("default_world_favicon_regular") {
+  sources = [
+    "default_world_favicon_regular.imageset/Contents.json",
+    "default_world_favicon_regular.imageset/default_world_favicon_regular.png",
+    "default_world_favicon_regular.imageset/default_world_favicon_regular@2x.png",
+    "default_world_favicon_regular.imageset/default_world_favicon_regular@3x.png",
+  ]
+}
+
 imageset("default_favicon") {
   sources = [
     "default_favicon.imageset/Contents.json",
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/Contents.json b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/Contents.json
new file mode 100644
index 0000000..166bfe8
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+    "images": [
+        {
+            "idiom": "universal",
+            "scale": "1x",
+            "filename": "default_world_favicon_incognito.png"
+        },
+        {
+            "idiom": "universal",
+            "scale": "2x",
+            "filename": "default_world_favicon_incognito@2x.png"
+        },
+        {
+            "idiom": "universal",
+            "scale": "3x",
+            "filename": "default_world_favicon_incognito@3x.png"
+        }
+    ],
+    "info": {
+        "version": 1,
+        "author": "xcode"
+    }
+}
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito.png b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito.png
new file mode 100644
index 0000000..e40c3e5
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito.png
Binary files differ
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito@2x.png b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito@2x.png
new file mode 100644
index 0000000..2aaee82d
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito@3x.png b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito@3x.png
new file mode 100644
index 0000000..a5ab376
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_incognito.imageset/default_world_favicon_incognito@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/Contents.json b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/Contents.json
new file mode 100644
index 0000000..67ba34a9
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/Contents.json
@@ -0,0 +1,23 @@
+{
+    "images": [
+        {
+            "idiom": "universal",
+            "scale": "1x",
+            "filename": "default_world_favicon_regular.png"
+        },
+        {
+            "idiom": "universal",
+            "scale": "2x",
+            "filename": "default_world_favicon_regular@2x.png"
+        },
+        {
+            "idiom": "universal",
+            "scale": "3x",
+            "filename": "default_world_favicon_regular@3x.png"
+        }
+    ],
+    "info": {
+        "version": 1,
+        "author": "xcode"
+    }
+}
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular.png b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular.png
new file mode 100644
index 0000000..6385915
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular.png
Binary files differ
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular@2x.png b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular@2x.png
new file mode 100644
index 0000000..042390d
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular@2x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular@3x.png b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular@3x.png
new file mode 100644
index 0000000..8b80de5
--- /dev/null
+++ b/ios/chrome/browser/ui/favicon/resources/default_world_favicon_regular.imageset/default_world_favicon_regular@3x.png
Binary files differ
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
index d32534bf..ff66980 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_cell.mm
@@ -170,7 +170,7 @@
 - (void)setTheme:(GridTheme)theme {
   if (_theme == theme)
     return;
-  self.iconView.backgroundColor = UIColorFromRGB(kGridCellIconBackgroundColor);
+  self.iconView.backgroundColor = UIColor.clearColor;
   self.snapshotView.backgroundColor =
       UIColorFromRGB(kGridCellSnapshotBackgroundColor);
   switch (theme) {
@@ -202,14 +202,6 @@
 
 - (void)setIcon:(UIImage*)icon {
   self.iconView.image = icon;
-  // if |icon| is nil (that is, the cell should have no icon), set the icon
-  // background to be clear; otherwise set it to be the icon background.
-  if (icon) {
-    self.iconView.backgroundColor =
-        UIColorFromRGB(kGridCellIconBackgroundColor);
-  } else {
-    self.iconView.backgroundColor = UIColor.clearColor;
-  }
   _icon = icon;
 }
 
diff --git a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
index b81b7df..9bd1c2c 100644
--- a/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
+++ b/ios/chrome/browser/ui/tab_grid/grid/grid_constants.mm
@@ -68,10 +68,10 @@
 const CGFloat kGridCellIconCornerRadius = 3.0f;
 // The cell header contains the icon, title, and close button.
 const CGFloat kGridCellHeaderHeight = 32.0f;
-const CGFloat kGridCellHeaderLeadingInset = 5.0f;
+const CGFloat kGridCellHeaderLeadingInset = 9.0f;
 const CGFloat kGridCellCloseTapTargetWidthHeight = 44.0f;
 const CGFloat kGridCellCloseButtonContentInset = 8.5f;
 const CGFloat kGridCellTitleLabelContentInset = 4.0f;
-const CGFloat kGridCellIconDiameter = 22.0f;
+const CGFloat kGridCellIconDiameter = 16.0f;
 const CGFloat kGridCellSelectionRingGapWidth = 2.0f;
 const CGFloat kGridCellSelectionRingTintWidth = 5.0f;
diff --git a/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm b/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm
index 8ee3c84..72b6994 100644
--- a/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm
+++ b/ios/chrome/browser/ui/tab_grid/tab_grid_mediator.mm
@@ -328,9 +328,14 @@
   }
   UIImage* defaultFavicon;
   if (experimental_flags::IsCollectionsUIRebootEnabled()) {
-    defaultFavicon = [UIImage imageNamed:@"default_world_favicon"];
+    if (webState->GetBrowserState()->IsOffTheRecord()) {
+      defaultFavicon = [UIImage imageNamed:@"default_world_favicon_incognito"];
+    } else {
+      defaultFavicon = [UIImage imageNamed:@"default_world_favicon_regular"];
+    }
+  } else {
+    defaultFavicon = [UIImage imageNamed:@"default_favicon"];
   }
-  defaultFavicon = [UIImage imageNamed:@"default_favicon"];
   completion(defaultFavicon);
 
   favicon::FaviconDriver* faviconDriver =