Refactor Browser::Type

Change from {TABBED, POPUP}, to {NORMAL, POPUP, APP, DEVTOOLS}

Browser::is_type_tabbed() => Browser::is_type_normal()
Browser::is_type_popup() (used to include POPUP, APP, DEVTOOLS)
split into:
 * Browser::is_type_popup()
 * Browser::is_type_app()
 * Browser::is_type_devtools()

Browser::is_app() => Browser::deprecated_is_app() (APP or DEVTOOLS)
and also split into:
 * Browser::is_type_app()
 * Browser::is_type_devtools()

This is quite a large change, but there is hopefully no or very
little change to any logic.  To help reviewers, I have uploaded
10 different patchsets which each perform a small refactoring change
that make up this CL.

Patchset 12: s/TYPE_TABBED/TYPE_NORMAL/
Patchset 13: s/kMatchTabbed/kMatchNormal/
Patchset 14: s/is_type_tabbed/is_type_normal/
Patchset 15: s/is_devtools/is_type_devtools/
Patchset 16: s/is_app/deprecated_is_app/
Patchset 17: s/is_type_popup/!is_type_normal/
Patchset 18: Add TYPE_APP and TYPE_DEVTOOLS (main change)
Patchset 19: SyncedWindowDelegate
Patchset 20: little fixes, git cl format
Patchset 21: Fix types in tests

Patchset 18 is the only one that has any change to non-test
code which is not a pure refactor.

Bug: 990158
Change-Id: I8ade3205ff86fb974f1997daf06f237fdd541e45
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1741434
Commit-Queue: Joel Hockey <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Dana Fried <[email protected]>
Reviewed-by: Elly Fong-Jones <[email protected]>
Cr-Commit-Position: refs/heads/master@{#687078}
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
index 18b81d0..9481ea96e 100644
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -87,7 +87,7 @@
                        int window_id,
                        bool user_gesture,
                        std::string* error) {
-  Browser::CreateParams params(Browser::TYPE_TABBED, profile, user_gesture);
+  Browser::CreateParams params(Browser::TYPE_NORMAL, profile, user_gesture);
   Browser* browser = Browser::Create(params);
   if (!browser) {
     *error = tabs_constants::kBrowserWindowNotAllowed;
@@ -150,8 +150,8 @@
       return nullptr;
   }
 
-  // Ensure the selected browser is tabbed.
-  if (!browser->is_type_tabbed() && browser->IsAttemptingToCloseBrowser())
+  // Ensure the selected browser is normal.
+  if (!browser->is_type_normal() && browser->IsAttemptingToCloseBrowser())
     browser = chrome::FindTabbedBrowser(
         profile, function->include_incognito_information());
   if (!browser || !browser->window()) {
@@ -225,7 +225,7 @@
     browser = chrome::FindTabbedBrowser(profile, false);
     if (!browser) {
       Browser::CreateParams params =
-          Browser::CreateParams(Browser::TYPE_TABBED, profile, user_gesture);
+          Browser::CreateParams(Browser::TYPE_NORMAL, profile, user_gesture);
       browser = Browser::Create(params);
       if (!browser) {
         *error = tabs_constants::kBrowserWindowNotAllowed;
@@ -334,16 +334,13 @@
 
 // static
 std::string ExtensionTabUtil::GetBrowserWindowTypeText(const Browser& browser) {
-  if (browser.is_devtools())
+  if (browser.is_type_devtools())
     return tabs_constants::kWindowTypeValueDevTools;
-  if (browser.is_type_popup())
+  // TODO(crbug.com/990158): We return 'popup' for both popup and app since
+  // chrome.tabs.create({type: 'popup'}) uses
+  // Browser::CreateParams::CreateForApp.
+  if (browser.is_type_popup() || browser.is_type_app())
     return tabs_constants::kWindowTypeValuePopup;
-  // TODO(devlin): Browser::is_app() returns true whenever Browser::app_name_
-  // is non-empty (and includes instances such as devtools). Platform apps
-  // should no longer be returned here; are there any other cases (that aren't
-  // captured by is_devtools() or is_type_popup() for an app-type browser?
-  if (browser.is_app())
-    return tabs_constants::kWindowTypeValueApp;
   return tabs_constants::kWindowTypeValueNormal;
 }
 
@@ -779,7 +776,7 @@
 
 // static
 bool ExtensionTabUtil::BrowserSupportsTabs(Browser* browser) {
-  return browser && !browser->is_devtools();
+  return browser && !browser->is_type_devtools();
 }
 
 }  // namespace extensions