Enable default browser UX in side-by side dev and beta installs.

- ShellUtil::GetChromeDefaultState and
  GetChromeDefaultProtocolClientState now tell the caller if a different
  side-by-side install is the default handler.
- chrome://settings now shows the default browser UX for side-by-side
  channels that support setting as default (i.e., dev and beta).
- The Win10 welcome page, Win8 welcome dialog, and default browser
  infobar are all suppressed when another install of Chrome is default.

BUG=752007

Change-Id: I539325fa38a3de247209d0c4c17ee4ff58cfc0ef
Reviewed-on: https://chromium-review.googlesource.com/611801
Reviewed-by: Nico Weber <[email protected]>
Reviewed-by: Michael Wasserman <[email protected]>
Reviewed-by: Michael Giuffrida <[email protected]>
Reviewed-by: Jesse Doherty <[email protected]>
Reviewed-by: Patrick Monette <[email protected]>
Reviewed-by: Ben Wells <[email protected]>
Commit-Queue: Greg Thompson <[email protected]>
Cr-Commit-Position: refs/heads/master@{#494759}
diff --git a/chrome/browser/shell_integration.cc b/chrome/browser/shell_integration.cc
index 2946e45..105650e 100644
--- a/chrome/browser/shell_integration.cc
+++ b/chrome/browser/shell_integration.cc
@@ -230,18 +230,15 @@
   if (!callback_.is_null()) {
     switch (state) {
       case NOT_DEFAULT:
-        callback_.Run(NOT_DEFAULT);
-        break;
       case IS_DEFAULT:
-        callback_.Run(IS_DEFAULT);
-        break;
       case UNKNOWN_DEFAULT:
-        callback_.Run(UNKNOWN_DEFAULT);
-        break;
+      case OTHER_MODE_IS_DEFAULT:
+        callback_.Run(state);
+        return;
       case NUM_DEFAULT_STATES:
-        NOTREACHED();
         break;
     }
+    NOTREACHED();
   }
 }