xbuddy: Introduce the 'signed' image type

This change makes it possible to flash signed images from cros flash
using the `signed` alias.

BUG=chromium:852017
TEST=cros flash usb:// xbuddy://remote/eve-arcnext/latest-canary/signed
TEST=./xbuddy_unittest.py

Change-Id: I1c4c76ca0dd29845ef8639744745904e209a34eb
Reviewed-on: https://chromium-review.googlesource.com/1097609
Commit-Ready: Luis Hector Chavez <lhchavez@chromium.org>
Tested-by: Luis Hector Chavez <lhchavez@chromium.org>
Reviewed-by: Luis Hector Chavez <lhchavez@chromium.org>
Reviewed-by: Don Garrett <dgarrett@chromium.org>
diff --git a/xbuddy_unittest.py b/xbuddy_unittest.py
index 5fe7e15..bcee666 100755
--- a/xbuddy_unittest.py
+++ b/xbuddy_unittest.py
@@ -1,5 +1,5 @@
 #!/usr/bin/env python2
-
+# -*- coding: utf-8 -*-
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
@@ -152,8 +152,8 @@
                      self.mock_xb.LookupAlias(alias, board='parrot',
                                               version='1.2.3'))
 
-  def testResolveVersionToBuildId_Official(self):
-    """Check _ResolveVersionToBuildId recognizes aliases for official builds."""
+  def testResolveVersionToBuildIdAndChannel_Official(self):
+    """Check _ResolveVersionToBuildIdAndChannel support for official build."""
     board = 'b'
     suffix = '-s'
 
@@ -169,17 +169,17 @@
 
     self.mox.ReplayAll()
     version = 'latest-official'
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version)
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version,
-                                          image_dir=GS_ALTERNATE_DIR)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version,
+                                                    image_dir=GS_ALTERNATE_DIR)
     version = 'latest-official-paladin'
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version)
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version,
-                                          image_dir=GS_ALTERNATE_DIR)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version,
+                                                    image_dir=GS_ALTERNATE_DIR)
     self.mox.VerifyAll()
 
-  def testResolveVersionToBuildId_Channel(self):
-    """Check _ResolveVersionToBuildId recognizes aliases for channels."""
+  def testResolveVersionToBuildIdAndChannel_Channel(self):
+    """Check _ResolveVersionToBuildIdAndChannel support for channels."""
     board = 'b'
     suffix = '-s'
 
@@ -193,13 +193,13 @@
 
     self.mox.ReplayAll()
     version = 'latest'
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version)
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version,
-                                          image_dir=GS_ALTERNATE_DIR)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version,
+                                                    image_dir=GS_ALTERNATE_DIR)
     version = 'latest-dev'
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version)
-    self.mock_xb._ResolveVersionToBuildId(board, suffix, version,
-                                          image_dir=GS_ALTERNATE_DIR)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version)
+    self.mock_xb._ResolveVersionToBuildIdAndChannel(board, suffix, version,
+                                                    image_dir=GS_ALTERNATE_DIR)
     self.mox.VerifyAll()
 
   # TODO(dgarrett): Re-enable when crbug.com/585914 is fixed.
@@ -337,7 +337,7 @@
     self.mox.StubOutWithMock(gs.GSContext, 'LS')
     self.mox.StubOutWithMock(self.mock_xb, '_Download')
     for _ in range(8):
-      self.mock_xb._Download(mox.IsA(str), mox.In(mox.IsA(str)))
+      self.mock_xb._Download(mox.IsA(str), mox.In(mox.IsA(str)), mox.IsA(str))
 
     # All non-release urls are invalid so we can meet expectations.
     gs.GSContext.LS(