blob: 307964330c18e0ecf1030d6c0dd1288581145523 [file] [log] [blame]
// Copyright 2014 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_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_
#define CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_
#include "chrome/common/extensions/api/experience_sampling_private.h"
namespace content {
class BrowserContext;
}
class GURL;
namespace extensions {
using api::experience_sampling_private::UIElement;
class ExperienceSamplingEvent {
public:
// String constants for user decision events.
static const char kProceed[];
static const char kDeny[];
static const char kCancel[];
static const char kReload[];
// String constants for event names.
static const char kExtensionInstallDialog[];
// The Create() functions can return an empty scoped_ptr if they cannot find
// the BrowserContext. Code using them should check the scoped pointer using
// scoped_ptr::get().
static scoped_ptr<ExperienceSamplingEvent> Create(
const std::string& element_name,
const GURL& destination,
const GURL& referrer);
static scoped_ptr<ExperienceSamplingEvent> Create(
const std::string& element_name);
ExperienceSamplingEvent(const std::string& element_name,
const GURL& destination,
const GURL& referrer,
content::BrowserContext* browser_context);
~ExperienceSamplingEvent();
// Sends an extension API event for the user seeing this event.
void CreateOnDisplayedEvent();
// Sends an extension API event for the user making a decision about this
// event.
void CreateUserDecisionEvent(const std::string& decision_name);
bool has_viewed_details() const { return has_viewed_details_; }
void set_has_viewed_details(bool viewed) { has_viewed_details_ = viewed; }
bool has_viewed_learn_more() const { return has_viewed_learn_more_; }
void set_has_viewed_learn_more(bool viewed) {
has_viewed_learn_more_ = viewed;
}
private:
bool has_viewed_details_;
bool has_viewed_learn_more_;
content::BrowserContext* browser_context_;
UIElement ui_element_;
DISALLOW_COPY_AND_ASSIGN(ExperienceSamplingEvent);
};
} // namespace extensions
#endif // CHROME_BROWSER_EXTENSIONS_API_EXPERIENCE_SAMPLING_PRIVATE_EXPERIENCE_SAMPLING_H_