Home | History | Annotate | Download | only in extensions
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_EXPERIMENT_H_
      6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_EXPERIMENT_H_
      7 
      8 #include "base/memory/ref_counted.h"
      9 
     10 // Represents a permission dialog experiment.
     11 // TODO(meacer): Remove this class once the ExtensionPermissionDialog
     12 // experiment is completed (http://crbug.com/308748).
     13 class ExtensionInstallPromptExperiment
     14     : public base::RefCounted<ExtensionInstallPromptExperiment> {
     15  public:
     16   ExtensionInstallPromptExperiment(unsigned int group_id, unsigned int flags);
     17 
     18   // Returns an experiment instance configured by the server. The ownership of
     19   // the returned pointer is passed to the caller.
     20   static ExtensionInstallPromptExperiment* Find();
     21 
     22   // Returns an experiment instance for the control group. The ownership of the
     23   // returned pointer is passed to the caller.
     24   static ExtensionInstallPromptExperiment* ControlGroup();
     25 
     26   // Returns true if this is a text only experiment. A text only experiment
     27   // only adds an explanation text at the bottom of the permission dialog
     28   // and changes the text on the add/cancel buttons.
     29   bool text_only() const;
     30 
     31   // The explanation text to be added for text only experiments.
     32   base::string16 GetExplanationText() const;
     33 
     34   // The text for the accept button for text only experiments.
     35   base::string16 GetOkButtonText() const;
     36 
     37   // The text for the cancel button for text only experiments.
     38   base::string16 GetCancelButtonText() const;
     39 
     40   // Returns true if the text color should be highlighted for the given
     41   // permission message.
     42   bool ShouldHighlightText(const base::string16& message) const;
     43 
     44   // Returns true if the text background should be highlighted for the given
     45   // permission message.
     46   bool ShouldHighlightBackground(const base::string16& message) const;
     47 
     48   // Returns true if there should be a "Show details" link at the bottom of the
     49   // permission dialog.
     50   bool show_details_link() const;
     51 
     52   // Returns true if there should be checkboxes next to permissions for the
     53   // user to click.
     54   bool show_checkboxes() const;
     55 
     56   // Returns true if the permission list should be hidden by default and can
     57   // be expanded when necessary.
     58   bool should_show_expandable_permission_list() const;
     59 
     60   // Returns true if the experiment should show inline explanations for
     61   // permissions.
     62   bool should_show_inline_explanations() const;
     63 
     64   // Returns the inline explanation text for the given permission warning.
     65   // Returns empty string if there is no corresponding inline explanation.
     66   base::string16 GetInlineExplanation(const base::string16& message) const;
     67 
     68  private:
     69   friend class base::RefCounted<ExtensionInstallPromptExperiment>;
     70   ~ExtensionInstallPromptExperiment();
     71 
     72   // Group id of the experiment. The zeroth group is the control group.
     73   const unsigned int group_id_;
     74   // Bitmask for the changes done to the UI by the experiment. An experiment can
     75   // change multiple parts of the UI.
     76   const unsigned int flags_;
     77 
     78   DISALLOW_COPY_AND_ASSIGN(ExtensionInstallPromptExperiment);
     79 };
     80 
     81 #endif  // CHROME_BROWSER_EXTENSIONS_EXTENSION_INSTALL_PROMPT_EXPERIMENT_H_
     82