| // Copyright 2016 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 COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_METRICS_H_ | 
 | #define COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_METRICS_H_ | 
 |  | 
 | #include <utility> | 
 | #include <vector> | 
 |  | 
 | #include "base/time/time.h" | 
 | #include "components/ntp_snippets/category.h" | 
 | #include "ui/base/window_open_disposition.h" | 
 |  | 
 | namespace ntp_snippets { | 
 | namespace metrics { | 
 |  | 
 | // |is_category_visible| contains true iff the corresponding category can be | 
 | // seen by the user on this page (even if it is empty). It does not depend on | 
 | // whether the user actually saw the category. | 
 | void OnPageShown(const std::vector<Category>& categories, | 
 |                  const std::vector<int>& suggestions_per_category, | 
 |                  const std::vector<bool>& is_category_visible); | 
 |  | 
 | // Should only be called once per NTP for each suggestion. | 
 | void OnSuggestionShown(int global_position, | 
 |                        Category category, | 
 |                        int position_in_category, | 
 |                        base::Time publish_date, | 
 |                        float score, | 
 |                        base::Time fetch_date); | 
 |  | 
 | // TODO(crbug.com/682160): Take struct, so that one could not mix up the | 
 | // order of arguments. | 
 | void OnSuggestionOpened(int global_position, | 
 |                         Category category, | 
 |                         int category_index, | 
 |                         int position_in_category, | 
 |                         base::Time publish_date, | 
 |                         float score, | 
 |                         WindowOpenDisposition disposition, | 
 |                         bool is_prefetched, | 
 |                         bool is_offline); | 
 |  | 
 | void OnSuggestionMenuOpened(int global_position, | 
 |                             Category category, | 
 |                             int position_in_category, | 
 |                             base::Time publish_date, | 
 |                             float score); | 
 |  | 
 | void OnSuggestionDismissed(int global_position, | 
 |                            Category category, | 
 |                            int position_in_category, | 
 |                            bool visited); | 
 |  | 
 | void OnSuggestionTargetVisited(Category category, base::TimeDelta visit_time); | 
 |  | 
 | void OnCategoryMovedUp(int new_index); | 
 |  | 
 | // Should only be called once per NTP for each "more" button. | 
 | void OnMoreButtonShown(Category category, int position); | 
 |  | 
 | void OnMoreButtonClicked(Category category, int position); | 
 |  | 
 | void OnCategoryDismissed(Category category); | 
 |  | 
 | void RecordRemoteSuggestionsProviderState(bool enabled); | 
 |  | 
 | void RecordContentSuggestionDismissed(); | 
 |  | 
 | void RecordCategoryDismissed(); | 
 |  | 
 | void RecordFetchAction(); | 
 |  | 
 | }  // namespace metrics | 
 | }  // namespace ntp_snippets | 
 |  | 
 | #endif  // COMPONENTS_NTP_SNIPPETS_CONTENT_SUGGESTIONS_SERVICE_H_ |