gfx/harfbuzz/src/hb-gobject-structs.cc

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /*
     2  * Copyright © 2011  Google, Inc.
     3  *
     4  *  This is part of HarfBuzz, a text shaping library.
     5  *
     6  * Permission is hereby granted, without written agreement and without
     7  * license or royalty fees, to use, copy, modify, and distribute this
     8  * software and its documentation for any purpose, provided that the
     9  * above copyright notice and the following two paragraphs appear in
    10  * all copies of this software.
    11  *
    12  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
    13  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
    14  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
    15  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
    16  * DAMAGE.
    17  *
    18  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
    19  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    20  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
    21  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
    22  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
    23  *
    24  * Google Author(s): Behdad Esfahbod
    25  */
    27 #include "hb-private.hh"
    29 /* g++ didn't like older gtype.h gcc-only code path. */
    30 #include <glib.h>
    31 #if !GLIB_CHECK_VERSION(2,29,16)
    32 #undef __GNUC__
    33 #undef __GNUC_MINOR__
    34 #define __GNUC__ 2
    35 #define __GNUC_MINOR__ 6
    36 #endif
    38 #include "hb-gobject.h"
    40 #define HB_DEFINE_BOXED_TYPE(name,copy_func,free_func) \
    41 GType \
    42 hb_gobject_##name##_get_type (void) \
    43 { \
    44    static gsize type_id = 0; \
    45    if (g_once_init_enter (&type_id)) { \
    46       GType id = g_boxed_type_register_static (g_intern_static_string ("hb_" #name "_t"), \
    47 					       (GBoxedCopyFunc) copy_func, \
    48 					       (GBoxedFreeFunc) free_func); \
    49       g_once_init_leave (&type_id, id); \
    50    } \
    51    return type_id; \
    52 }
    54 #define HB_DEFINE_OBJECT_TYPE(name) \
    55 	HB_DEFINE_BOXED_TYPE (name, hb_##name##_reference, hb_##name##_destroy);
    57 HB_DEFINE_OBJECT_TYPE (buffer)
    58 HB_DEFINE_OBJECT_TYPE (blob)
    59 HB_DEFINE_OBJECT_TYPE (face)
    60 HB_DEFINE_OBJECT_TYPE (font)
    61 HB_DEFINE_OBJECT_TYPE (font_funcs)
    62 HB_DEFINE_OBJECT_TYPE (set)
    63 HB_DEFINE_OBJECT_TYPE (shape_plan)
    64 HB_DEFINE_OBJECT_TYPE (unicode_funcs)
    67 static hb_feature_t *feature_reference (hb_feature_t *g)
    68 {
    69   hb_feature_t *c = (hb_feature_t *) calloc (1, sizeof (hb_feature_t));
    70   if (unlikely (!c)) return NULL;
    71   *c = *g;
    72   return c;
    73 }
    74 static void feature_destroy (hb_feature_t *g) { free (g); }
    75 HB_DEFINE_BOXED_TYPE (feature, feature_reference, feature_destroy)
    77 static hb_glyph_info_t *glyph_info_reference (hb_glyph_info_t *g)
    78 {
    79   hb_glyph_info_t *c = (hb_glyph_info_t *) calloc (1, sizeof (hb_glyph_info_t));
    80   if (unlikely (!c)) return NULL;
    81   *c = *g;
    82   return c;
    83 }
    84 static void glyph_info_destroy (hb_glyph_info_t *g) { free (g); }
    85 HB_DEFINE_BOXED_TYPE (glyph_info, glyph_info_reference, glyph_info_destroy)
    87 static hb_glyph_position_t *glyph_position_reference (hb_glyph_position_t *g)
    88 {
    89   hb_glyph_position_t *c = (hb_glyph_position_t *) calloc (1, sizeof (hb_glyph_position_t));
    90   if (unlikely (!c)) return NULL;
    91   *c = *g;
    92   return c;
    93 }
    94 static void glyph_position_destroy (hb_glyph_position_t *g) { free (g); }
    95 HB_DEFINE_BOXED_TYPE (glyph_position, glyph_position_reference, glyph_position_destroy)
    97 static hb_segment_properties_t *segment_properties_reference (hb_segment_properties_t *g)
    98 {
    99   hb_segment_properties_t *c = (hb_segment_properties_t *) calloc (1, sizeof (hb_segment_properties_t));
   100   if (unlikely (!c)) return NULL;
   101   *c = *g;
   102   return c;
   103 }
   104 static void segment_properties_destroy (hb_segment_properties_t *g) { free (g); }
   105 HB_DEFINE_BOXED_TYPE (segment_properties, segment_properties_reference, segment_properties_destroy)
   107 static hb_user_data_key_t user_data_key_reference (hb_user_data_key_t l) { return l; }
   108 static void user_data_key_destroy (hb_user_data_key_t l) { }
   109 HB_DEFINE_BOXED_TYPE (user_data_key, user_data_key_reference, user_data_key_destroy)
   112 static hb_language_t *language_reference (hb_language_t *l)
   113 {
   114   hb_language_t *c = (hb_language_t *) calloc (1, sizeof (hb_language_t));
   115   if (unlikely (!c)) return NULL;
   116   *c = *l;
   117   return c;
   118 }
   119 static void language_destroy (hb_language_t *l) { free (l); }
   120 HB_DEFINE_BOXED_TYPE (language, language_reference, language_destroy)

mercurial