js/src/yarr/MatchResult.h

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 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
     2  * vim: set ts=8 sts=4 et sw=4 tw=99:
     3  *
     4  * Copyright (C) 2012 Apple Inc. All rights reserved.
     5  *
     6  * Redistribution and use in source and binary forms, with or without
     7  * modification, are permitted provided that the following conditions
     8  * are met:
     9  * 1. Redistributions of source code must retain the above copyright
    10  *    notice, this list of conditions and the following disclaimer.
    11  * 2. Redistributions in binary form must reproduce the above copyright
    12  *    notice, this list of conditions and the following disclaimer in the
    13  *    documentation and/or other materials provided with the distribution.
    14  *
    15  * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
    16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
    19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
    23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    26  */
    28 #ifndef yarr_MatchResult_h
    29 #define yarr_MatchResult_h
    31 #include "yarr/wtfbridge.h"
    33 typedef uint64_t EncodedMatchResult;
    35 struct MatchResult {
    36     MatchResult(int start, int end)
    37         : start(start)
    38         , end(end)
    39     {
    40     }
    42 #if !WTF_CPU_X86_64 || WTF_PLATFORM_WIN
    43     explicit MatchResult(EncodedMatchResult encoded)
    44     {
    45         union u {
    46             uint64_t encoded;
    47             struct s {
    48                 int start;
    49                 int end;
    50             } split;
    51         } value;
    52         value.encoded = encoded;
    53         start = value.split.start;
    54         end = value.split.end;
    55     }
    56 #endif
    58     static MatchResult failed()
    59     {
    60         return MatchResult(int(WTF::notFound), 0);
    61     }
    63     operator bool()
    64     {
    65         return start != int(WTF::notFound);
    66     }
    68     bool empty()
    69     {
    70         return start == end;
    71     }
    73     // strings are limited to a length of 2^28. So this is safe
    74     int start;
    75     int end;
    76 };
    78 #endif /* yarr_MatchResult_h */

mercurial