Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(456)

Unified Diff: chrome/browser/resources/google_now/background_unittest.gtestjs

Issue 19822007: Updated Google Now to Check the Geolocation Access Preference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@r213016
Patch Set: Sync and Resolve Conflicts Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/google_now/background_unittest.gtestjs
diff --git a/chrome/browser/resources/google_now/background_unittest.gtestjs b/chrome/browser/resources/google_now/background_unittest.gtestjs
index a556c3fd438edfc09598baf5cdc98e7fe924ac53..516c3d632d70878f7200989d1ca3dd132f7b57c7 100644
--- a/chrome/browser/resources/google_now/background_unittest.gtestjs
+++ b/chrome/browser/resources/google_now/background_unittest.gtestjs
@@ -30,14 +30,22 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() {
testTaskPair(UPDATE_CARDS_TASK_NAME, UPDATE_CARDS_TASK_NAME, true);
testTaskPair(UPDATE_CARDS_TASK_NAME, DISMISS_CARD_TASK_NAME, false);
testTaskPair(UPDATE_CARDS_TASK_NAME, RETRY_DISMISS_TASK_NAME, false);
+ testTaskPair(UPDATE_CARDS_TASK_NAME, STATE_CHANGED_TASK_NAME, false);
testTaskPair(DISMISS_CARD_TASK_NAME, UPDATE_CARDS_TASK_NAME, false);
testTaskPair(DISMISS_CARD_TASK_NAME, DISMISS_CARD_TASK_NAME, false);
testTaskPair(DISMISS_CARD_TASK_NAME, RETRY_DISMISS_TASK_NAME, false);
+ testTaskPair(DISMISS_CARD_TASK_NAME, STATE_CHANGED_TASK_NAME, false);
testTaskPair(RETRY_DISMISS_TASK_NAME, UPDATE_CARDS_TASK_NAME, true);
testTaskPair(RETRY_DISMISS_TASK_NAME, DISMISS_CARD_TASK_NAME, true);
testTaskPair(RETRY_DISMISS_TASK_NAME, RETRY_DISMISS_TASK_NAME, true);
+ testTaskPair(RETRY_DISMISS_TASK_NAME, STATE_CHANGED_TASK_NAME, false);
+
+ testTaskPair(STATE_CHANGED_TASK_NAME, UPDATE_CARDS_TASK_NAME, false);
+ testTaskPair(STATE_CHANGED_TASK_NAME, DISMISS_CARD_TASK_NAME, false);
+ testTaskPair(STATE_CHANGED_TASK_NAME, RETRY_DISMISS_TASK_NAME, false);
+ testTaskPair(STATE_CHANGED_TASK_NAME, STATE_CHANGED_TASK_NAME, false);
});
/**
@@ -46,35 +54,130 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() {
*/
function mockInitializeDependencies(fixture) {
fixture.makeAndRegisterMockGlobals([
- 'recordEvent',
- 'showWelcomeToast',
- 'startPollingCards']);
- fixture.makeAndRegisterMockApis(
- ['storage.get', 'chrome.identity.getAuthToken']);
+ 'recordEvent',
+ 'showWelcomeToast',
+ 'startPollingCards'
+ ]);
+ fixture.makeAndRegisterMockApis([
+ 'chrome.identity.getAuthToken',
+ 'chrome.location.clearWatch',
+ 'chrome.notifications.getAll',
+ 'chrome.preferencesPrivate.googleGeolocationAccessEnabled.get',
+ 'storage.get',
+ 'storage.set',
+ 'tasks.add',
+ 'updateCardsAttempts.isRunning',
+ 'updateCardsAttempts.stop'
+ ]);
+}
+
+/**
+ * Sets up the test to expect the state machine calls and send
+ * the specified state machine state. Currently used to test initialize().
+ * Note that this CAN NOT be used if any of the methods below are called
+ * outside of this context with the same argument matchers.
+ * expects() calls cannot be chained with the same argument matchers.
+ * @param {object} mockApisObj Mock APIs Object.
+ * @param {string} testIdentityToken getAuthToken callback token.
+ * @param {boolean} testGeolocationPref Geolocation Preference callback value.
+ * @param {boolean} testUserRespondedToToast User Response to toast
+ & callback value.
+ */
+function expectStateMachineCalls(
+ mockApisObj,
+ testIdentityToken,
+ testGeolocationPref,
+ testUserRespondedToToast) {
+ var chromeIdentityGetAuthTokenSavedArgs = new SaveMockArguments();
+ mockApisObj.expects(once()).
+ chrome_identity_getAuthToken(
+ chromeIdentityGetAuthTokenSavedArgs.match(
+ eqJSON({interactive: false})),
+ chromeIdentityGetAuthTokenSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ chromeIdentityGetAuthTokenSavedArgs, 1, testIdentityToken));
+
+ var googleGeolocationPrefGetSavedArgs = new SaveMockArguments();
+ mockApisObj.expects(once()).
+ chrome_preferencesPrivate_googleGeolocationAccessEnabled_get(
+ googleGeolocationPrefGetSavedArgs.match(eqJSON({})),
+ googleGeolocationPrefGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(
+ googleGeolocationPrefGetSavedArgs, 1, {value: testGeolocationPref}));
+
+ var storageGetSavedArgs = new SaveMockArguments();
+ mockApisObj.expects(once()).
+ storage_get(
+ storageGetSavedArgs.match(eq('userRespondedToToast')),
+ storageGetSavedArgs.match(ANYTHING)).
+ will(invokeCallback(storageGetSavedArgs, 1, testUserRespondedToToast));
+}
+
+/**
+ * Sets up the test to expect the initialization calls that
+ * initialize() invokes.
+ * Note that this CAN NOT be used if any of the methods below are called
+ * outside of this context with the same argument matchers.
+ * expects() calls cannot be chained with the same argument matchers.
+ */
+function expectInitialization(mockApisObj) {
+ mockApisObj.expects(once()).
+ chrome_location_clearWatch(ANYTHING);
+ mockApisObj.expects(once()).
+ updateCardsAttempts_stop();
+ mockApisObj.expects(once()).
+ storage_set(eqJSON({notificationsData: {}}));
+ var tasksAddSavedArgs = new SaveMockArguments();
+ mockApisObj.expects(once()).
+ tasks_add(
+ tasksAddSavedArgs.match(ANYTHING),
+ tasksAddSavedArgs.match(ANYTHING)).
+ will(invokeCallback(tasksAddSavedArgs, 1, function() {}));
+ var updateCardsAttemptsIsRunningSavedArgs = new SaveMockArguments();
+ mockApisObj.expects(once()).
+ updateCardsAttempts_isRunning(
+ updateCardsAttemptsIsRunningSavedArgs.match(ANYTHING)).
+ will(
+ invokeCallback(
+ updateCardsAttemptsIsRunningSavedArgs, 0, false));
}
TEST_F(
'GoogleNowBackgroundUnitTest',
'Initialize_ToastStateEmpty1',
function() {
- // Tests the case when toast state is empty and NOTIFICATION_CARDS_URL is
- // not set. In this case, the function should quietly exit after finding
- // out that NOTIFICATION_CARDS_URL is empty.
+ // Tests the case when the user isn't signed in and NOTIFICATION_CARDS_URL
+ // is not set. Since NOTIFICATION_CARDS_URL is empty,
+ // nothing should start.
// Setup and expectations.
- var testToastState = {};
NOTIFICATION_CARDS_URL = undefined;
+ var testIdentityToken = undefined;
+ var testGeolocationPref = false;
+ var testUserRespondedToToast = {};
mockInitializeDependencies(this);
this.mockGlobals.expects(once()).recordEvent(
DiagnosticEvent.EXTENSION_START);
- var storageGetSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- storage_get(
- storageGetSavedArgs.match(eq('toastState')),
- storageGetSavedArgs.match(ANYTHING)).
- will(invokeCallback(storageGetSavedArgs, 1, testToastState));
+
+ expectInitialization(this.mockApis);
+
+ expectStateMachineCalls(
+ this.mockApis,
+ testIdentityToken,
+ testGeolocationPref,
+ testUserRespondedToToast);
+
+ var chromeNotificationGetAllSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(exactly(2)).
+ chrome_notifications_getAll(
+ chromeNotificationGetAllSavedArgs.match(ANYTHING)).
+ will(
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}),
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}));
+
+ // TODO(robliao,vadimt): Determine the granularity of testing to perform.
// Invoking the tested function.
initialize();
@@ -84,34 +187,36 @@ TEST_F(
'GoogleNowBackgroundUnitTest',
'Initialize_ToastStateEmpty2',
function() {
- // Tests the case when toast state is empty and NOTIFICATION_CARDS_URL is
- // set, but getAuthToken fails most likely because the user is not signed
- // in. In this case, the function should quietly exit after finding out
- // that getAuthToken fails.
+ // Tests the case when NOTIFICATION_CARDS_URL is but getAuthToken fails
+ // most likely because the user is not signed in. In this case, the
+ // function should quietly exit after finding out that getAuthToken fails.
// Setup and expectations.
- var testToastState = {};
NOTIFICATION_CARDS_URL = 'https://some.server.url.com';
var testIdentityToken = undefined;
+ var testGeolocationPref = false;
+ var testUserRespondedToToast = {};
mockInitializeDependencies(this);
this.mockGlobals.expects(once()).recordEvent(
DiagnosticEvent.EXTENSION_START);
- var storageGetSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- storage_get(
- storageGetSavedArgs.match(eq('toastState')),
- storageGetSavedArgs.match(ANYTHING)).
- will(invokeCallback(storageGetSavedArgs, 1, testToastState));
- var chromeIdentityGetAuthTokenSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- chrome_identity_getAuthToken(
- chromeIdentityGetAuthTokenSavedArgs.match(
- eqJSON({interactive: false})),
- chromeIdentityGetAuthTokenSavedArgs.match(ANYTHING)).
- will(invokeCallback(
- chromeIdentityGetAuthTokenSavedArgs, 1, testIdentityToken));
+
+ expectInitialization(this.mockApis);
+
+ expectStateMachineCalls(
+ this.mockApis,
+ testIdentityToken,
+ testGeolocationPref,
+ testUserRespondedToToast);
+
+ var chromeNotificationGetAllSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(exactly(2)).
+ chrome_notifications_getAll(
+ chromeNotificationGetAllSavedArgs.match(ANYTHING)).
+ will(
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}),
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}));
// Invoking the tested function.
initialize();
@@ -121,77 +226,110 @@ TEST_F(
'GoogleNowBackgroundUnitTest',
'Initialize_ToastStateEmpty3',
function() {
- // Tests the case when toast state is empty and NOTIFICATION_CARDS_URL is
- // set, and getAuthToken succeeds. In this case, the function should
- // invoke showWelcomeToast().
+ // Tests the case when NOTIFICATION_CARDS_URL is set, getAuthToken
+ // succeeds, and the user has never responded to the toast.
+ // In this case, the function should invoke showWelcomeToast().
// Setup and expectations.
- var testToastState = {};
NOTIFICATION_CARDS_URL = 'https://some.server.url.com';
var testIdentityToken = 'some identity token';
+ var testGeolocationPref = false;
+ var testUserRespondedToToast = {};
mockInitializeDependencies(this);
this.mockGlobals.expects(once()).recordEvent(
DiagnosticEvent.EXTENSION_START);
- var storageGetSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- storage_get(
- storageGetSavedArgs.match(eq('toastState')),
- storageGetSavedArgs.match(ANYTHING)).
- will(invokeCallback(storageGetSavedArgs, 1, testToastState));
- var chromeIdentityGetAuthTokenSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- chrome_identity_getAuthToken(
- chromeIdentityGetAuthTokenSavedArgs.match(
- eqJSON({interactive: false})),
- chromeIdentityGetAuthTokenSavedArgs.match(ANYTHING)).
- will(invokeCallback(
- chromeIdentityGetAuthTokenSavedArgs, 1, testIdentityToken));
+
+ expectInitialization(this.mockApis);
+
+ expectStateMachineCalls(
+ this.mockApis,
+ testIdentityToken,
+ testGeolocationPref,
+ testUserRespondedToToast);
+
+ var chromeNotificationGetAllSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(exactly(2)).
+ chrome_notifications_getAll(
+ chromeNotificationGetAllSavedArgs.match(ANYTHING)).
+ will(
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}),
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}));
+
this.mockGlobals.expects(once()).showWelcomeToast();
// Invoking the tested function.
initialize();
});
-TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_ToastStateYes', function() {
- // Tests the case when the user has answered "yes" to the toast in the past.
- // In this case, the function should invoke startPollingCards().
+TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_RunGoogleNow', function() {
+ // Tests if Google Now will invoke startPollingCards when all
+ // of the required state is fulfilled.
// Setup and expectations.
- var testToastState = {toastState: ToastOptionResponse.CHOSE_YES};
+ NOTIFICATION_CARDS_URL = 'https://some.server.url.com';
+ var testIdentityToken = 'some identity token';
+ var testGeolocationPref = true;
+ var testUserRespondedToToast = {userRespondedToToast: true};
mockInitializeDependencies(this);
- this.mockGlobals.expects(once()).recordEvent(DiagnosticEvent.EXTENSION_START);
- var storageGetSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- storage_get(
- storageGetSavedArgs.match(eq('toastState')),
- storageGetSavedArgs.match(ANYTHING)).
- will(invokeCallback(storageGetSavedArgs, 1, testToastState));
+ this.mockGlobals.expects(once()).recordEvent(
+ DiagnosticEvent.EXTENSION_START);
+
+ expectInitialization(this.mockApis);
+
+ expectStateMachineCalls(
+ this.mockApis,
+ testIdentityToken,
+ testGeolocationPref,
+ testUserRespondedToToast);
+
+ var chromeNotificationGetAllSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(exactly(2)).
+ chrome_notifications_getAll(
+ chromeNotificationGetAllSavedArgs.match(ANYTHING)).
+ will(
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}),
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}));
+
this.mockGlobals.expects(once()).startPollingCards();
// Invoking the tested function.
initialize();
});
-TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_ToastStateNo', function() {
- // Tests the case when the user has answered "no" to the toast in the past.
- // In this case, the function should do nothing.
+TEST_F('GoogleNowBackgroundUnitTest', 'Initialize_NoGeolocation', function() {
+ // Tests the case where everything is in place except for the
+ // Geolocation Preference after the user responded to the toast.
// Setup and expectations.
- var testToastState = {toastState: ToastOptionResponse.CHOSE_NO};
+ NOTIFICATION_CARDS_URL = 'https://some.server.url.com';
+ var testIdentityToken = 'some identity token';
+ var testGeolocationPref = false;
+ var testUserRespondedToToast = {userRespondedToToast: true};
mockInitializeDependencies(this);
- this.mockGlobals.expects(once()).recordEvent(DiagnosticEvent.EXTENSION_START);
- var storageGetSavedArgs = new SaveMockArguments();
- this.mockApis.expects(once()).
- storage_get(
- storageGetSavedArgs.match(eq('toastState')),
- storageGetSavedArgs.match(ANYTHING)).
- will(invokeCallback(storageGetSavedArgs, 1, testToastState));
+ this.mockGlobals.expects(once()).recordEvent(
+ DiagnosticEvent.EXTENSION_START);
+
+ expectInitialization(this.mockApis);
+
+ expectStateMachineCalls(
+ this.mockApis,
+ testIdentityToken,
+ testGeolocationPref,
+ testUserRespondedToToast);
+
+ var chromeNotificationGetAllSavedArgs = new SaveMockArguments();
+ this.mockApis.expects(exactly(2)).
+ chrome_notifications_getAll(
+ chromeNotificationGetAllSavedArgs.match(ANYTHING)).
+ will(
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}),
+ invokeCallback(chromeNotificationGetAllSavedArgs, 0, {}));
// Invoking the tested function.
initialize();
« no previous file with comments | « chrome/browser/resources/google_now/background_test_util.js ('k') | chrome/browser/resources/google_now/utility.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698