Home | History | Annotate | Download | only in options
      1 // Copyright (c) 2012 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_UI_WEBUI_OPTIONS_PEPPER_FLASH_CONTENT_SETTINGS_UTILS_H_
      6 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_PEPPER_FLASH_CONTENT_SETTINGS_UTILS_H_
      7 
      8 #include <vector>
      9 
     10 #include "chrome/common/content_settings.h"
     11 #include "chrome/common/content_settings_pattern.h"
     12 #include "ppapi/c/private/ppp_flash_browser_operations.h"
     13 #include "ppapi/shared_impl/ppp_flash_browser_operations_shared.h"
     14 
     15 namespace options {
     16 
     17 struct MediaException {
     18   MediaException(const ContentSettingsPattern& in_pattern,
     19                  ContentSetting in_audio_setting,
     20                  ContentSetting in_video_setting);
     21   ~MediaException();
     22 
     23   bool operator==(const MediaException& other) const;
     24 
     25   ContentSettingsPattern pattern;
     26   ContentSetting audio_setting;
     27   ContentSetting video_setting;
     28 };
     29 
     30 typedef std::vector<MediaException> MediaExceptions;
     31 
     32 class PepperFlashContentSettingsUtils {
     33  public:
     34   static ContentSetting FlashPermissionToContentSetting(
     35       PP_Flash_BrowserOperations_Permission permission);
     36 
     37   static void FlashSiteSettingsToMediaExceptions(
     38       const ppapi::FlashSiteSettings& site_settings,
     39       MediaExceptions* media_exceptions);
     40 
     41   // Sorts |media_exceptions| in ascending order by comparing the |pattern|
     42   // field of the elements.
     43   static void SortMediaExceptions(MediaExceptions* media_exceptions);
     44 
     45   // Checks whether |exceptions_1| and |exceptions_2| describe the same set of
     46   // exceptions. |exceptions_1| and |exceptions_2| should be sorted by
     47   // SortMediaExceptions() before passing into this method.
     48   //
     49   // When an element of |exceptions_1| has a pattern that doesn't match any
     50   // element of |exceptions_2|, it would be compared with |default_setting_2|,
     51   // and visa versa.
     52   //
     53   // |ignore_audio_setting| and |ignore_video_setting| specify whether to skip
     54   // comparison of the |audio_setting| and |video_setting| field of
     55   // MediaException, respectively.
     56   static bool AreMediaExceptionsEqual(ContentSetting default_setting_1,
     57                                       const MediaExceptions& exceptions_1,
     58                                       ContentSetting default_setting_2,
     59                                       const MediaExceptions& exceptions_2,
     60                                       bool ignore_audio_setting,
     61                                       bool ignore_video_setting);
     62 };
     63 
     64 }  // namespace options
     65 
     66 #endif  // CHROME_BROWSER_UI_WEBUI_OPTIONS_PEPPER_FLASH_CONTENT_SETTINGS_UTILS_H_
     67