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

from core import perf_benchmark

from telemetry import benchmark
from telemetry.timeline import tracing_category_filter
from telemetry.web_perf import timeline_based_measurement

import page_sets


BLOB_CATEGORY = 'Blob'
TIMELINE_REQUIRED_CATEGORY = 'blink.console'


@benchmark.Disabled  # http://crbug.com/510815
#@benchmark.Disabled('reference',  # http://crbug.com/496155
#                    'android')    # http://crbug.com/499325
class BlobStorage(perf_benchmark.PerfBenchmark):
  """Timeline based measurement benchmark for Blob Storage."""

  page_set = page_sets.BlobWorkshopPageSet

  def CreateTimelineBasedMeasurementOptions(self):
    cat_filter = tracing_category_filter.CreateMinimalOverheadFilter()
    cat_filter.AddIncludedCategory(BLOB_CATEGORY)
    cat_filter.AddIncludedCategory(TIMELINE_REQUIRED_CATEGORY)

    return timeline_based_measurement.Options(
        overhead_level=cat_filter)

  @classmethod
  def Name(cls):
    return 'blob_storage.blob_storage'

  @classmethod
  def ValueCanBeAddedPredicate(cls, value, is_first_result):
    if ('blob-writes' not in value.name and
        'blob-reads' not in value.name):
      return False
    return value.values != None