chromium/tools/perf/contrib/shared_storage/pages.py

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

from contrib.shared_storage.page_set import SharedStorageStory


class SharedStorageDocumentSetStory(SharedStorageStory):
  NAME = "SharedStorageDocumentSet"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  window.sharedStorage.set('a{{ index }}', 'b{{ index }}');
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }]


class SharedStorageDocumentAppendStory(SharedStorageStory):
  NAME = "SharedStorageDocumentAppend"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  window.sharedStorage.append('a{{ index }}', 'b{{ index }}');
  window.sharedStorage.append('a{{ index }}', 'c{{ index }}');
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentAppend',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }, {
      'type': 'documentAppend',
      'params': {
          'key': 'a{{ index }}',
          'value': 'c{{ index }}'
      }
  }]


class SharedStorageDocumentDeleteStory(SharedStorageStory):
  NAME = "SharedStorageDocumentDelete"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  window.sharedStorage.set('a{{ index }}', 'b{{ index }}');
  window.sharedStorage.delete('a{{ index }}');
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }, {
      'type': 'documentDelete',
      'params': {
          'key': 'a{{ index }}'
      }
  }]


class SharedStorageDocumentClearStory(SharedStorageStory):
  NAME = "SharedStorageDocumentClear"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  window.sharedStorage.set('a{{ index }}', 'b{{ index }}')
  window.sharedStorage.clear()
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }, {
      'type': 'documentClear'
  }]
  RENAVIGATE_AFTER_ACTION = True


class SharedStorageWorkletRunSetStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunSet"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-set-operation',
                    {data: {'key': 'a{{ index }}',
                            'value': 'b{{ index }}'},
                     keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'workletSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }]


class SharedStorageWorkletSelectURLSetStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLSet"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-set-operation',
                          [{url: 'with_worklet.html'}],
                          {data: {'key': 'a{{ index }}',
                                  'value': 'b{{ index }}'},
                           keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'workletSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }]


class SharedStorageWorkletRunAppendStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunAppend"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-append-operation',
                    {data: {'key': 'a{{ index }}',
                            'value': 'b{{ index }}'},
                     keepAlive: true});
  sharedStorage.run('run-append-operation',
                    {data: {'key': 'a{{ index }}',
                            'value': 'c{{ index }}'},
                     keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'documentRun'
  }, {
      'type': 'workletAppend',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }, {
      'type': 'workletAppend',
      'params': {
          'key': 'a{{ index }}',
          'value': 'c{{ index }}'
      }
  }]


class SharedStorageWorkletSelectURLAppendStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLAppend"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-append-operation',
                          [{url: 'with_worklet.html'}],
                          {data: {'key': 'a{{ index }}',
                                  'value': 'b{{ index }}'},
                           keepAlive: true});
  sharedStorage.selectURL('selecturl-append-operation',
                          [{url: 'with_worklet.html'}],
                          {data: {'key': 'a{{ index }}',
                                  'value': 'c{{ index }}'},
                           keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'documentSelectURL'
  }, {
      'type': 'workletAppend',
      'params': {
          'key': 'a{{ index }}',
          'value': 'b{{ index }}'
      }
  }, {
      'type': 'workletAppend',
      'params': {
          'key': 'a{{ index }}',
          'value': 'c{{ index }}'
      }
  }]


class SharedStorageWorkletRunDeleteStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunDelete"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.set('a{{ index }}', 'any');
  sharedStorage.run('run-delete-operation',
                    {data: {'key': 'a{{ index }}'},
                     keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'any'
      }
  }, {
      'type': 'documentRun'
  }, {
      'type': 'workletDelete',
      'params': {
          'key': 'a{{ index }}'
      }
  }]


class SharedStorageWorkletSelectURLDeleteStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLDelete"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.set('a{{ index }}', 'any');
  sharedStorage.selectURL('selecturl-delete-operation',
                          [{url: 'with_worklet.html'}],
                          {data: {'key': 'a{{ index }}'},
                           keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'any'
      }
  }, {
      'type': 'documentSelectURL'
  }, {
      'type': 'workletDelete',
      'params': {
          'key': 'a{{ index }}'
      }
  }]


class SharedStorageWorkletRunClearStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunClear"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.set('a{{ index }}', 'any');
  sharedStorage.run('run-clear-operation',
                    {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'any'
      }
  }, {
      'type': 'documentRun'
  }, {
      'type': 'workletClear'
  }]
  RENAVIGATE_AFTER_ACTION = True


class SharedStorageWorkletSelectURLClearStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLClear"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.set('a{{ index }}', 'any');
  sharedStorage.selectURL('selecturl-clear-operation',
                          [{url: 'with_worklet.html'}],
                          {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSet',
      'params': {
          'key': 'a{{ index }}',
          'value': 'any'
      }
  }, {
      'type': 'documentSelectURL'
  }, {
      'type': 'workletClear'
  }]
  RENAVIGATE_AFTER_ACTION = True


class SharedStorageWorkletRunGetStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunGet"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0');
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-get-operation',
                    {data: {'key': 'k0'},
                     keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'workletGet',
      'params': {
          'key': 'k0'
      }
  }]


class SharedStorageWorkletSelectURLGetStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLGet"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0')
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-get-operation',
                          [{url: 'with_worklet.html'}],
                          {data: {'key': 'k0'},
                           keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'workletGet',
      'params': {
          'key': 'k0'
      }
  }]


class SharedStorageWorkletRunLengthStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunLength"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0')
  sharedStorage.set('k1', 'v1')
  sharedStorage.set('k2', 'v2')
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k1',
          'value': 'v1'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k2',
          'value': 'v2'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-length-operation',
                    {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'workletLength'
  }]


class SharedStorageWorkletSelectURLLengthStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLLength"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0');
  sharedStorage.set('k1', 'v1');
  sharedStorage.set('k2', 'v2');
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k1',
          'value': 'v1'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k2',
          'value': 'v2'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-length-operation',
                          [{url: 'with_worklet.html'}],
                          {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'workletLength'
  }]


class SharedStorageWorkletRunKeysStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunKeys"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0')
  sharedStorage.set('k1', 'v1')
  sharedStorage.set('k2', 'v2')
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k1',
          'value': 'v1'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k2',
          'value': 'v2'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-keys-operation',
                    {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'workletKeys'
  }]
  # Expect to iterate over `3 + self.SIZE` keys, each with a call to
  # `GetNextIterationResult()`, then make one last call to
  # `GetNextIterationResult()` to terminate the iteration with
  # `MakeEndOfIteration()`.
  EXPECTED_ITERATOR_HISTOGRAM_COUNT = "4 + self.SIZE"


class SharedStorageWorkletSelectURLKeysStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLKeys"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0');
  sharedStorage.set('k1', 'v1');
  sharedStorage.set('k2', 'v2');
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k1',
          'value': 'v1'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k2',
          'value': 'v2'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-keys-operation',
                          [{url: 'with_worklet.html'}],
                          {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'workletKeys'
  }]
  # Expect to iterate over `3 + self.SIZE` keys, each with a call to
  # `GetNextIterationResult()`, then make one last call to
  # `GetNextIterationResult()` to terminate the iteration with
  # `MakeEndOfIteration()`.
  EXPECTED_ITERATOR_HISTOGRAM_COUNT = "4 + self.SIZE"


class SharedStorageWorkletRunEntriesStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunEntries"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0')
  sharedStorage.set('k1', 'v1')
  sharedStorage.set('k2', 'v2')
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k1',
          'value': 'v1'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k2',
          'value': 'v2'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-entries-operation',
                    {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'workletEntries'
  }]
  # Expect to iterate over `3 + self.SIZE` entries, each with a call to
  # `GetNextIterationResult()`, then make one last call to
  # `GetNextIterationResult()` to terminate the iteration with
  # `MakeEndOfIteration()`.
  EXPECTED_ITERATOR_HISTOGRAM_COUNT = "4 + self.SIZE"


class SharedStorageWorkletSelectURLEntriesStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLEntries"
  ABSTRACT_STORY = False
  SETUP_SCRIPT = """
  sharedStorage.set('k0', 'v0');
  sharedStorage.set('k1', 'v1');
  sharedStorage.set('k2', 'v2');
  """
  EXPECTED_SETUP_EVENTS = [{
      'type': 'documentSet',
      'params': {
          'key': 'k0',
          'value': 'v0'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k1',
          'value': 'v1'
      }
  }, {
      'type': 'documentSet',
      'params': {
          'key': 'k2',
          'value': 'v2'
      }
  }]
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-entries-operation',
                          [{url: 'with_worklet.html'}],
                          {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'workletEntries'
  }]
  # Expect to iterate over `3 + self.SIZE` entries, each with a call to
  # `GetNextIterationResult()`, then make one last call to
  # `GetNextIterationResult()` to terminate the iteration with
  # `MakeEndOfIteration()`.
  EXPECTED_ITERATOR_HISTOGRAM_COUNT = "4 + self.SIZE"


class SharedStorageWorkletRunRemainingBudgetStory(SharedStorageStory):
  NAME = "SharedStorageWorkletRunRemainingBudget"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.run('run-remainingbudget-operation',
                    {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentRun'
  }, {
      'type': 'workletRemainingBudget'
  }]


class SharedStorageWorkletSelectURLRemainingBudgetStory(SharedStorageStory):
  NAME = "SharedStorageWorkletSelectURLRemainingBudget"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """
  sharedStorage.selectURL('selecturl-remainingbudget-operation',
                          [{url: 'with_worklet.html'}],
                          {keepAlive: true});
  """
  EXPECTED_ACTION_EVENTS_TEMPLATE = [{
      'type': 'documentSelectURL'
  }, {
      'type': 'workletRemainingBudget'
  }]


class SharedStorageDocumentAddModuleStory(SharedStorageStory):
  NAME = "SharedStorageDocumentAddModule"
  ABSTRACT_STORY = False
  ACTION_SCRIPT_TEMPLATE = """"""
  EXPECTED_ACTION_EVENTS_TEMPLATE = []
  RENAVIGATE_AFTER_ACTION = True