# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from telemetry import story
from page_sets.desktop_ui import (
  new_tab_page_story,
  omnibox_story,
  tab_search_story,
)


class DesktopUIStorySet(story.StorySet):
  TAB_SEARCH_STORIES = [
    tab_search_story.TabSearchStoryTop10,
    tab_search_story.TabSearchStoryTop50,
    tab_search_story.TabSearchStoryTop10Loading,
    tab_search_story.TabSearchStoryRecentlyClosed10,
    tab_search_story.TabSearchStoryRecentlyClosed50,
    tab_search_story.TabSearchStoryRecentlyClosed100,
    tab_search_story.TabSearchStoryTop50Loading,
    tab_search_story.TabSearchStoryCloseAndOpen,
    tab_search_story.TabSearchStoryCloseAndOpenLoading,
    tab_search_story.TabSearchStoryScrollUpAndDown,
    tab_search_story.TabSearchStoryCleanSlate,
    tab_search_story.TabSearchStoryMeasureMemoryBefore,
    tab_search_story.TabSearchStoryMeasureMemoryAfter,
    tab_search_story.TabSearchStoryMeasureMemoryMultiwindow,
    tab_search_story.TabSearchStoryMeasureMemory2TabSearch,
    tab_search_story.TabSearchStoryMeasureMemory3TabSearch,
  ]

  OMNIBOX_STORIES = [
    omnibox_story.OmniboxStoryPedal,
    omnibox_story.OmniboxStoryScopedSearch,
    omnibox_story.OmniboxStorySearch,
  ]

  NEW_TAB_PAGE_STORIES = [
    new_tab_page_story.NewTabPageStoryLoading,
  ]

  def __init__(self):
    super(DesktopUIStorySet, self).__init__(
      archive_data_file=('../data/desktop_ui.json'),
      cloud_storage_bucket=story.PARTNER_BUCKET,
    )
    for cls in self.TAB_SEARCH_STORIES:
      self.AddStory(
        cls(
          self,
          [
            '--top-chrome-touch-ui=disabled',
            '--enable-features=TabSearchUseMetricsReporter',
          ],
        )
      )

    for cls in self.OMNIBOX_STORIES:
      self.AddStory(cls(self))

    for cls in self.NEW_TAB_PAGE_STORIES:
      features = [
        'NtpRecipeTasksModule:NtpRecipeTasksModuleDataParam/fake',
        'NtpChromeCartModule:NtpChromeCartModuleDataParam/fake',
        'NtpDriveModule:NtpDriveModuleDataParam/fake',
        'NtpPhotosModule:NtpPhotosModuleDataParam/1',
      ]
      self.AddStory(
        cls(
          self,
          [
            '--enable-features=%s' % ','.join(features),
            '--signed-out-ntp-modules',
          ],
        )
      )
