| Index: chrome/browser/predictors/resource_prefetch_predictor_tables.h
|
| diff --git a/chrome/browser/predictors/resource_prefetch_predictor_tables.h b/chrome/browser/predictors/resource_prefetch_predictor_tables.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6e323907d338a9d60ba49b6029095c3da33d350b
|
| --- /dev/null
|
| +++ b/chrome/browser/predictors/resource_prefetch_predictor_tables.h
|
| @@ -0,0 +1,81 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +#ifndef CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_TABLES_H_
|
| +#define CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_TABLES_H_
|
| +#pragma once
|
| +
|
| +#include "chrome/browser/predictors/predictor_table_base.h"
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include "googleurl/src/gurl.h"
|
| +#include "webkit/glue/resource_type.h"
|
| +
|
| +namespace predictors {
|
| +
|
| +// Interface for database tables used by the ResourcePrefetchPredictor.
|
| +// All methods except the constructor and destructor need to be called on the DB
|
| +// thread.
|
| +// NOTE: This class is named in plural as it will hold other tables shortly.
|
| +//
|
| +// TODO(shishir): Move to composition model instead of implemented inheritance.
|
| +class ResourcePrefetchPredictorTables : public PredictorTableBase {
|
| + public:
|
| + struct UrlTableRow {
|
| + UrlTableRow();
|
| + UrlTableRow(const UrlTableRow& other);
|
| + UrlTableRow(const std::string& main_frame_url,
|
| + const std::string& resource_url,
|
| + ResourceType::Type resource_type,
|
| + int number_of_hits,
|
| + int number_of_misses,
|
| + int consecutive_misses,
|
| + double average_position);
|
| + void UpdateScore();
|
| + bool operator==(const UrlTableRow& rhs) const;
|
| +
|
| + GURL main_frame_url;
|
| + GURL resource_url;
|
| + ResourceType::Type resource_type;
|
| + int number_of_hits;
|
| + int number_of_misses;
|
| + int consecutive_misses;
|
| + double average_position;
|
| +
|
| + // Not stored.
|
| + float score;
|
| + };
|
| + typedef std::vector<UrlTableRow> UrlTableRows;
|
| +
|
| + // Sorts the UrlTableRows by score, descending.
|
| + struct UrlTableRowSorter {
|
| + bool operator()(const UrlTableRow& x, const UrlTableRow& y) const;
|
| + };
|
| +
|
| + // |url_row_buffer| should be empty for GetAllRows.
|
| + virtual void GetAllRows(UrlTableRows* url_row_buffer);
|
| + virtual void UpdateRowsForUrl(const GURL& main_page_url,
|
| + const UrlTableRows& row_buffer);
|
| + virtual void DeleteRowsForUrls(const std::vector<GURL>& urls);
|
| + virtual void DeleteAllRows();
|
| +
|
| + private:
|
| + friend class PredictorDatabaseInternal;
|
| + friend class MockResourcePrefetchPredictorTables;
|
| +
|
| + ResourcePrefetchPredictorTables();
|
| + virtual ~ResourcePrefetchPredictorTables();
|
| +
|
| + // PredictorTableBase methods.
|
| + virtual void CreateTableIfNonExistent() OVERRIDE;
|
| + virtual void LogDatabaseStats() OVERRIDE;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ResourcePrefetchPredictorTables);
|
| +};
|
| +
|
| +} // namespace predictors
|
| +
|
| +#endif // CHROME_BROWSER_PREDICTORS_RESOURCE_PREFETCH_PREDICTOR_TABLES_H_
|
|
|