Index: chrome/test/data/webui/print_preview_destination_search_test.js |
diff --git a/chrome/test/data/webui/print_preview_destination_search_test.js b/chrome/test/data/webui/print_preview_destination_search_test.js |
index e63db9d7c56e5214df5340d17e90c9fc5e3ab8d9..2155bd7820beb4ff844b9bbad2fb318f5ba96494 100644 |
--- a/chrome/test/data/webui/print_preview_destination_search_test.js |
+++ b/chrome/test/data/webui/print_preview_destination_search_test.js |
@@ -27,7 +27,7 @@ PrintPreviewDestinationSearchTest.prototype = { |
extraLibraries: PolymerTest.getLibraries(ROOT_PATH), |
}; |
-TEST_F('PrintPreviewDestinationSearchTest', 'DISABLED_Select', function() { |
+TEST_F('PrintPreviewDestinationSearchTest', 'Select', function() { |
var self = this; |
suite('DestinationSearchTest', function() { |
@@ -98,18 +98,55 @@ TEST_F('PrintPreviewDestinationSearchTest', 'DISABLED_Select', function() { |
}); |
}; |
- function requestSetup(destId, nativeLayerMock, destinationSearch) { |
+ function mockSetupCall(destId, nativeLayerMock) { |
+ var resolver = new PromiseResolver(); |
+ |
+ if (cr.isChromeOS) { |
+ nativeLayerMock.expects(once()).setupPrinter(destId). |
+ will(returnValue(resolver.promise)); |
+ |
+ return resolver; |
+ } |
+ |
+ nativeLayerMock.expects(once()).startGetLocalDestinationCapabilities( |
+ destId); |
+ resolver.promise.then( |
+ function(result) { |
+ // Simulate the native layer dispatching capabilities. |
+ var capsSetEvent = |
+ new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); |
+ capsSetEvent.settingsInfo = result; |
+ destinationStore_.onLocalDestinationCapabilitiesSet_(capsSetEvent); |
+ }.bind(this), |
+ function() { |
+ var failEvent = new Event( |
+ print_preview.NativeLayer.EventType.GET_CAPABILITIES_FAIL); |
+ failEvent.destinationId = destId; |
+ destinationStore_.onGetCapabilitiesFail_(failEvent); |
+ }.bind(this)); |
+ |
+ return resolver; |
+ }; |
+ |
+ function requestSetup(destId, destinationSearch) { |
+ var origin = cr.isChromeOS ? print_preview.Destination.Origin.CROS : |
+ print_preview.Destination.Origin.LOCAL; |
+ |
var dest = new print_preview.Destination(destId, |
print_preview.Destination.Type.LOCAL, |
- print_preview.Destination.Origin.CROS, |
+ origin, |
"displayName", |
print_preview.Destination.ConnectionStatus.ONLINE); |
- var resolver = new PromiseResolver(); |
- nativeLayerMock.expects(once()).setupPrinter(destId). |
- will(returnValue(resolver.promise)); |
- destinationSearch.handleOnDestinationSelect_(dest); |
- return resolver; |
+ // Add the destination to the list. |
+ destinationSearch.localList_.updateDestinations([dest]); |
+ |
+ // Select destination. |
+ if (cr.isChromeOS) { |
+ destinationSearch.handleConfigureDestination_(dest); |
+ } else { |
+ destinationSearch.handleOnDestinationSelect_(dest); |
+ } |
}; |
function resolveSetup(resolver, printerId, success, capabilities) { |
@@ -145,19 +182,30 @@ TEST_F('PrintPreviewDestinationSearchTest', 'DISABLED_Select', function() { |
}); |
test('ResolutionFails', function() { |
+ if (!cr.isChromeOS) { |
+ // Capabilities failure logs a console error for non-CrOS printers. |
+ // TODO(crbug.com/708739): Handle this gracefully and activate test. |
+ return; |
+ } |
+ |
var destId = "001122DEADBEEF"; |
- var resolver = requestSetup(destId, nativeLayer_, destinationSearch_); |
+ |
+ var resolver = mockSetupCall(destId, nativeLayer_); |
+ requestSetup(destId, destinationSearch_); |
resolver.reject(destId); |
}); |
test('ReceiveSuccessfulSetup', function() { |
+ |
var destId = "00112233DEADBEEF"; |
- var resolver = requestSetup(destId, nativeLayer_, destinationSearch_); |
- waiter = waitForEvent( |
+ var waiter = waitForEvent( |
destinationStore_, |
print_preview.DestinationStore.EventType.DESTINATION_SELECT); |
+ var resolver = mockSetupCall(destId, nativeLayer_); |
+ |
+ requestSetup(destId, destinationSearch_); |
resolveSetup(resolver, destId, true, getCaps()); |
// wait for event propogation to complete. |
@@ -170,17 +218,21 @@ TEST_F('PrintPreviewDestinationSearchTest', 'DISABLED_Select', function() { |
test('ReceiveFailedSetup', function() { |
var destId = '00112233DEADBEEF'; |
- var resolver = requestSetup(destId, nativeLayer_, destinationSearch_); |
- waiter = waitForEvent( |
- destinationStore_, |
- print_preview.DestinationStore.EventType.PRINTER_CONFIGURED); |
+ var resolver = mockSetupCall(destId, nativeLayer_); |
+ requestSetup(destId, destinationSearch_); |
+ // Force resolution to fail. |
resolveSetup(resolver, destId, false, null); |
- return waiter.then(function() { |
+ if (cr.isChromeOS) { |
+ // Selection should not change on ChromeOS. |
assertEquals(null, destinationStore_.selectedDestination); |
- }); |
+ } else { |
+ // Other code expects selection to be present so it still occurs |
+ // for non-CrOS. |
+ assertEquals(destId, destinationStore_.selectedDestination.id); |
+ } |
}); |
}); |