| 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 a837bfe4bf67c7ac720d5da2e6c18b34aefff1c4..0099576f4a1e4c67b983095e34186f27dff82e50 100644
 | 
| --- a/chrome/browser/resources/google_now/background_unittest.gtestjs
 | 
| +++ b/chrome/browser/resources/google_now/background_unittest.gtestjs
 | 
| @@ -51,406 +51,6 @@ TEST_F('GoogleNowBackgroundUnitTest', 'AreTasksConflicting', function() {
 | 
|    testTaskPair(STATE_CHANGED_TASK_NAME, STATE_CHANGED_TASK_NAME, false);
 | 
|  });
 | 
|  
 | 
| -var testNotificationId = 'TEST GROUP-SOME TEST ID';
 | 
| -var testChromeNotificationId = 'TEST CARD ID';
 | 
| -var testNotification1 =
 | 
| -    {testNotificationField: 'TEST NOTIFICATION VALUE1', priority: -1};
 | 
| -var testNotification2 =
 | 
| -    {testNotificationField: 'TEST NOTIFICATION VALUE2', priority: 0};
 | 
| -var testActionUrls1 = {testField: 'TEST VALUE1'};
 | 
| -var testActionUrls2 = {testField: 'TEST VALUE2'};
 | 
| -var testDismissal1 = {testDismissalField: 'TEST DISMISSAL VALUE 1'};
 | 
| -var testDismissal2 = {testDismissalField: 'TEST DISMISSAL VALUE 2'};
 | 
| -var testVersion = 7;
 | 
| -var testTimestamp1 = 300000;
 | 
| -var testTimestamp2 = 600000;
 | 
| -var testGroupRank1 = 19;
 | 
| -var testGroupRank2 = 23;
 | 
| -var testTriggerUnmerged = {showTimeSec: 100, hideTimeSec: 200};
 | 
| -var testTriggerMerged = {showTime: 300007, hideTime: 300011};
 | 
| -var testVersion1 = 29;
 | 
| -var testVersion2 = 31;
 | 
| -
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'MergeCardsEmptyNoTrigger',
 | 
| -    function() {
 | 
| -      // Tests merging a card with an empty trigger into an 'undefined' merged
 | 
| -      // card. This should start a new card.
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      var resultingMergedCard = mergeCards(undefined, {
 | 
| -        notificationId: testNotificationId,
 | 
| -        chromeNotificationId: testChromeNotificationId,
 | 
| -        version: testVersion1,
 | 
| -        chromeNotificationOptions: testNotification1,
 | 
| -        actionUrls: testActionUrls1,
 | 
| -        dismissal: testDismissal1
 | 
| -      }, testTimestamp1, testGroupRank1);
 | 
| -
 | 
| -      // Check the return value.
 | 
| -      assertEquals(
 | 
| -          JSON.stringify({
 | 
| -            dismissals: [
 | 
| -              {
 | 
| -                notificationId: testNotificationId,
 | 
| -                parameters: testDismissal1
 | 
| -              }
 | 
| -            ],
 | 
| -            groupRank: testGroupRank1,
 | 
| -            trigger: {},
 | 
| -            timestamp: testTimestamp1,
 | 
| -            notification: testNotification1,
 | 
| -            actionUrls: testActionUrls1,
 | 
| -            version: testVersion1
 | 
| -          }),
 | 
| -        JSON.stringify(resultingMergedCard));
 | 
| -    });
 | 
| -
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'MergeCards1',
 | 
| -    function() {
 | 
| -      // Tests merging a unmerged card into a merged card.
 | 
| -      // Unmerged card priority is greater than merged card one. Unmerged card
 | 
| -      // rank is less than merged card one, and it's older.
 | 
| -
 | 
| -      // Setup.
 | 
| -      var mergedCard = {
 | 
| -        trigger: testTriggerMerged,
 | 
| -        version: testVersion1,
 | 
| -        timestamp: testTimestamp2,
 | 
| -        notification: testNotification1,
 | 
| -        actionUrls: testActionUrls1,
 | 
| -        groupRank: testGroupRank2,
 | 
| -        dismissals:
 | 
| -            [{notificationId: testNotificationId, parameters: testDismissal1}]
 | 
| -      };
 | 
| -
 | 
| -      var unmergedNotification = {
 | 
| -        notificationId: testNotificationId,
 | 
| -        chromeNotificationId: testChromeNotificationId,
 | 
| -        version: testVersion2,
 | 
| -        chromeNotificationOptions: testNotification2,
 | 
| -        actionUrls: testActionUrls2,
 | 
| -        dismissal: testDismissal2,
 | 
| -        trigger: testTriggerUnmerged
 | 
| -      };
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      var resultingMergedCard = mergeCards(
 | 
| -          mergedCard, unmergedNotification, testTimestamp1, testGroupRank1);
 | 
| -
 | 
| -      // Check the return value.
 | 
| -      assertEquals(
 | 
| -          JSON.stringify({
 | 
| -            trigger: testTriggerMerged,
 | 
| -            version: testVersion1,
 | 
| -            timestamp: testTimestamp2,
 | 
| -            notification: {
 | 
| -                testNotificationField: 'TEST NOTIFICATION VALUE1',
 | 
| -                priority: 0
 | 
| -             },
 | 
| -            actionUrls: testActionUrls1,
 | 
| -            groupRank: testGroupRank2,
 | 
| -            dismissals: [
 | 
| -              {notificationId: testNotificationId, parameters: testDismissal1},
 | 
| -              {notificationId: testNotificationId, parameters: testDismissal2}
 | 
| -            ]
 | 
| -          }),
 | 
| -        JSON.stringify(resultingMergedCard));
 | 
| -    });
 | 
| -
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'MergeCards2',
 | 
| -    function() {
 | 
| -      // Tests merging a unmerged card into a merged card.
 | 
| -      // Unmerged card priority is less than merged card one. Unmerged card rank
 | 
| -      // is greater than merged card one, and it's older.
 | 
| -
 | 
| -      // Setup.
 | 
| -      var mergedCard = {
 | 
| -        trigger: testTriggerMerged,
 | 
| -        version: testVersion1,
 | 
| -        timestamp: testTimestamp2,
 | 
| -        notification: testNotification2,
 | 
| -        actionUrls: testActionUrls1,
 | 
| -        groupRank: testGroupRank1,
 | 
| -        dismissals:
 | 
| -            [{notificationId: testNotificationId, parameters: testDismissal1}]
 | 
| -      };
 | 
| -
 | 
| -      var unmergedNotification = {
 | 
| -        notificationId: testNotificationId,
 | 
| -        chromeNotificationId: testChromeNotificationId,
 | 
| -        version: testVersion2,
 | 
| -        chromeNotificationOptions: testNotification1,
 | 
| -        actionUrls: testActionUrls2,
 | 
| -        dismissal: testDismissal2,
 | 
| -        trigger: testTriggerUnmerged
 | 
| -      };
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      var resultingMergedCard = mergeCards(
 | 
| -          mergedCard, unmergedNotification, testTimestamp1, testGroupRank2);
 | 
| -
 | 
| -      // Check the return value.
 | 
| -      assertEquals(
 | 
| -          JSON.stringify({
 | 
| -            trigger: {showTime: 400000, hideTime: 500000},
 | 
| -            version: testVersion1,
 | 
| -            timestamp: testTimestamp2,
 | 
| -            notification: {
 | 
| -                testNotificationField: 'TEST NOTIFICATION VALUE2',
 | 
| -                priority: 0
 | 
| -             },
 | 
| -            actionUrls: testActionUrls1,
 | 
| -            groupRank: testGroupRank2,
 | 
| -            dismissals: [
 | 
| -              {notificationId: testNotificationId, parameters: testDismissal1},
 | 
| -              {notificationId: testNotificationId, parameters: testDismissal2}
 | 
| -            ]
 | 
| -          }),
 | 
| -        JSON.stringify(resultingMergedCard));
 | 
| -    });
 | 
| -
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'MergeCards3',
 | 
| -    function() {
 | 
| -      // Tests merging a unmerged card into a merged card.
 | 
| -      // Unmerged card priority is less than merged card one. Unmerged card rank
 | 
| -      // is less than merged card one, and it's newer.
 | 
| -
 | 
| -      // Setup.
 | 
| -      var mergedCard = {
 | 
| -        trigger: testTriggerMerged,
 | 
| -        version: testVersion1,
 | 
| -        timestamp: testTimestamp1,
 | 
| -        notification: testNotification2,
 | 
| -        actionUrls: testActionUrls1,
 | 
| -        groupRank: testGroupRank2,
 | 
| -        dismissals:
 | 
| -            [{notificationId: testNotificationId, parameters: testDismissal1}]
 | 
| -      };
 | 
| -
 | 
| -      var unmergedNotification = {
 | 
| -        notificationId: testNotificationId,
 | 
| -        chromeNotificationId: testChromeNotificationId,
 | 
| -        version: testVersion2,
 | 
| -        chromeNotificationOptions: testNotification1,
 | 
| -        actionUrls: testActionUrls2,
 | 
| -        dismissal: testDismissal2,
 | 
| -        trigger: testTriggerUnmerged
 | 
| -      };
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      var resultingMergedCard = mergeCards(
 | 
| -          mergedCard, unmergedNotification, testTimestamp2, testGroupRank1);
 | 
| -
 | 
| -      // Check the return value.
 | 
| -      assertEquals(
 | 
| -          JSON.stringify({
 | 
| -            trigger: testTriggerMerged,
 | 
| -            version: testVersion2,
 | 
| -            timestamp: testTimestamp2,
 | 
| -            notification: {
 | 
| -                testNotificationField: 'TEST NOTIFICATION VALUE1',
 | 
| -                priority: 0
 | 
| -             },
 | 
| -            actionUrls: testActionUrls2,
 | 
| -            groupRank: testGroupRank2,
 | 
| -            dismissals: [
 | 
| -              {notificationId: testNotificationId, parameters: testDismissal1},
 | 
| -              {notificationId: testNotificationId, parameters: testDismissal2}
 | 
| -            ]
 | 
| -          }),
 | 
| -        JSON.stringify(resultingMergedCard));
 | 
| -    });
 | 
| -
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'MergeGroup',
 | 
| -    function() {
 | 
| -      // Tests mergeGroup method.
 | 
| -
 | 
| -      // Setup.
 | 
| -      this.makeAndRegisterMockGlobals(['mergeCards']);
 | 
| -
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          mergeCards(
 | 
| -              undefined,
 | 
| -              eqJSON({chromeNotificationId: 'ID 1', testField: 'TEST_FIELD1'}),
 | 
| -              300000,
 | 
| -              17).
 | 
| -          will(returnValue({testField: 'RESULT 1'}));
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          mergeCards(
 | 
| -              eqJSON({testField: 'TEST_FIELD22'}),
 | 
| -              eqJSON({chromeNotificationId: 'ID 2', testField: 'TEST_FIELD2'}),
 | 
| -              300000,
 | 
| -              17).
 | 
| -          will(returnValue({testField: 'RESULT 2'}));
 | 
| -
 | 
| -      var group = {
 | 
| -        cards: [
 | 
| -          {chromeNotificationId: 'ID 1', testField: 'TEST_FIELD1'},
 | 
| -          {chromeNotificationId: 'ID 2', testField: 'TEST_FIELD2'}
 | 
| -        ],
 | 
| -        cardsTimestamp: 300000,
 | 
| -        nextPollTime: 600000,
 | 
| -        rank: 17
 | 
| -      };
 | 
| -
 | 
| -      var mergedCards = {
 | 
| -        'ID 2': { testField: 'TEST_FIELD22' },
 | 
| -        'ID 3': { testField: 'TEST_FIELD3' }
 | 
| -      };
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      mergeGroup(mergedCards, group);
 | 
| -
 | 
| -      // Check the output parameter.
 | 
| -      assertEquals(
 | 
| -          JSON.stringify({
 | 
| -            'ID 2': { testField: 'RESULT 2' },
 | 
| -            'ID 3': { testField: 'TEST_FIELD3'},
 | 
| -            'ID 1': { testField: 'RESULT 1' }}),
 | 
| -          JSON.stringify(mergedCards));
 | 
| -    });
 | 
| -
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'MergeAndShowNotificationCards',
 | 
| -    function() {
 | 
| -      // Tests mergeAndShowNotificationCards function.
 | 
| -      // The test passes 2 groups to mergeAndShowNotificationCards, checks that
 | 
| -      // it calls mergeGroup() for each of these groups and calls
 | 
| -      // showNotificationCards() with the results of these mergeGroup() calls.
 | 
| -
 | 
| -      // Setup and expectations.
 | 
| -      var testGroups = {
 | 
| -        'TEST GROUP 1': {testField: 'TEST VALUE 1'},
 | 
| -        'TEST GROUP 2': {testField: 'TEST VALUE 2'}
 | 
| -      };
 | 
| -
 | 
| -      this.makeAndRegisterMockGlobals(['mergeGroup', 'showNotificationCards']);
 | 
| -
 | 
| -      var mergeGroupSavedArgs = new SaveMockArguments();
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          mergeGroup(
 | 
| -              mergeGroupSavedArgs.match(eqJSON({})),
 | 
| -              mergeGroupSavedArgs.match(eqJSON({testField: 'TEST VALUE 1'}))).
 | 
| -          will(callFunction(function() {
 | 
| -            mergeGroupSavedArgs.arguments[0].card1 = {
 | 
| -              testValue: 'TEST CARD VALUE 1'
 | 
| -            };
 | 
| -          }));
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          mergeGroup(
 | 
| -              mergeGroupSavedArgs.match(
 | 
| -                  eqJSON({card1: {testValue: 'TEST CARD VALUE 1'}})),
 | 
| -              mergeGroupSavedArgs.match(
 | 
| -                  eqJSON({testField: 'TEST VALUE 2'}))).
 | 
| -          will(callFunction(function() {
 | 
| -              mergeGroupSavedArgs.arguments[0].card2 = {
 | 
| -                testValue: 'TEST CARD VALUE 2'
 | 
| -              };
 | 
| -          }));
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          showNotificationCards(
 | 
| -              eqJSON({
 | 
| -                card1: {testValue: 'TEST CARD VALUE 1'},
 | 
| -                card2: {testValue: 'TEST CARD VALUE 2'}
 | 
| -              }),
 | 
| -              ANYTHING);
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      mergeAndShowNotificationCards(testGroups, function() {});
 | 
| -    });
 | 
| -
 | 
| -// TODO(vadimt): Add more tests for parseAndShowNotificationCards().
 | 
| -TEST_F(
 | 
| -    'GoogleNowBackgroundUnitTest',
 | 
| -    'ParseAndShowNotificationCardsAdd1Remove1',
 | 
| -    function() {
 | 
| -      // Tests parseAndShowNotificationCards function for the case when the
 | 
| -      // extension has 2 groups, and the server sends update with 2 groups, one
 | 
| -      // of which is new, and another one matches a stored group. The client
 | 
| -      // has to delete the group that didn't receive an update, keep the
 | 
| -      // existing group that received an update, and add a new stored group for
 | 
| -      // the new group from the server.
 | 
| -
 | 
| -      // Setup and expectations.
 | 
| -      var serverResponse = {
 | 
| -        groups: {
 | 
| -          GROUP1: {},
 | 
| -          GROUP2: {}
 | 
| -        }
 | 
| -      };
 | 
| -
 | 
| -      var storedGroups = {
 | 
| -        GROUP2: {
 | 
| -          cards: ['c2'],
 | 
| -          cardsTimestamp: 239,
 | 
| -          nextPollTime: 10000,
 | 
| -          rank: 1
 | 
| -        },
 | 
| -        GROUP3: {
 | 
| -          cards: ['c3'],
 | 
| -          cardsTimestamp: 240,
 | 
| -          nextPollTime: 10001,
 | 
| -          rank: 2
 | 
| -        }
 | 
| -      };
 | 
| -
 | 
| -      var expectedUpdatedGroups = {
 | 
| -        GROUP1: {
 | 
| -          cards: []
 | 
| -        },
 | 
| -        GROUP2: {
 | 
| -          cards: ['c2'],
 | 
| -          cardsTimestamp: 239,
 | 
| -          nextPollTime: 10000,
 | 
| -          rank: 1
 | 
| -        }
 | 
| -      };
 | 
| -
 | 
| -      this.makeAndRegisterMockGlobals(
 | 
| -          ['scheduleNextPoll', 'mergeAndShowNotificationCards', 'recordEvent']);
 | 
| -
 | 
| -      this.makeAndRegisterMockApis([
 | 
| -        'chrome.storage.local.set',
 | 
| -        'instrumented.storage.local.get'
 | 
| -      ]);
 | 
| -
 | 
| -      var storageGetSavedArgs = new SaveMockArguments();
 | 
| -      this.mockApis.expects(once()).
 | 
| -          instrumented_storage_local_get(
 | 
| -              storageGetSavedArgs.match(eq('notificationGroups')),
 | 
| -              storageGetSavedArgs.match(ANYTHING)).
 | 
| -          will(invokeCallback(
 | 
| -              storageGetSavedArgs, 1, {notificationGroups: storedGroups}));
 | 
| -
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          scheduleNextPoll(eqJSON(expectedUpdatedGroups), true);
 | 
| -
 | 
| -      this.mockApis.expects(once()).
 | 
| -          chrome_storage_local_set(
 | 
| -              eqJSON({notificationGroups: expectedUpdatedGroups}));
 | 
| -
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          mergeAndShowNotificationCards(
 | 
| -              eqJSON(expectedUpdatedGroups), ANYTHING);
 | 
| -
 | 
| -      this.mockGlobals.expects(once()).
 | 
| -          recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
 | 
| -
 | 
| -      // Invoking the tested function.
 | 
| -      parseAndShowNotificationCards(JSON.stringify(serverResponse));
 | 
| -    });
 | 
| -
 | 
|  /**
 | 
|   * Mocks global functions and APIs that initialize() depends upon.
 | 
|   * @param {Test} fixture Test fixture.
 | 
| 
 |