gfx/skia/trunk/src/core/SkAnnotation.cpp

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 2012 Google Inc.
     3  *
     4  * Use of this source code is governed by a BSD-style license that can be
     5  * found in the LICENSE file.
     6  */
     8 #include "SkAnnotation.h"
     9 #include "SkData.h"
    10 #include "SkReadBuffer.h"
    11 #include "SkWriteBuffer.h"
    12 #include "SkPoint.h"
    13 #include "SkStream.h"
    15 SkAnnotation::SkAnnotation(const char key[], SkData* value) : fKey(key) {
    16     if (NULL == value) {
    17         value = SkData::NewEmpty();
    18     } else {
    19         value->ref();
    20     }
    21     fData = value;
    22 }
    24 SkAnnotation::~SkAnnotation() {
    25     fData->unref();
    26 }
    28 SkData* SkAnnotation::find(const char key[]) const {
    29     return fKey.equals(key) ? fData : NULL;
    30 }
    32 SkAnnotation::SkAnnotation(SkReadBuffer& buffer) {
    33     buffer.readString(&fKey);
    34     fData = buffer.readByteArrayAsData();
    35 }
    37 void SkAnnotation::writeToBuffer(SkWriteBuffer& buffer) const {
    38     buffer.writeString(fKey.c_str());
    39     buffer.writeDataAsByteArray(fData);
    40 }
    42 const char* SkAnnotationKeys::URL_Key() {
    43     return "SkAnnotationKey_URL";
    44 };
    46 const char* SkAnnotationKeys::Define_Named_Dest_Key() {
    47     return "SkAnnotationKey_Define_Named_Dest";
    48 };
    50 const char* SkAnnotationKeys::Link_Named_Dest_Key() {
    51     return "SkAnnotationKey_Link_Named_Dest";
    52 };
    54 ///////////////////////////////////////////////////////////////////////////////
    56 #include "SkCanvas.h"
    58 static void annotate_paint(SkPaint& paint, const char* key, SkData* value) {
    59     paint.setAnnotation(SkAnnotation::Create(key, value))->unref();
    60 }
    62 void SkAnnotateRectWithURL(SkCanvas* canvas, const SkRect& rect, SkData* value) {
    63     if (NULL == value) {
    64         return;
    65     }
    66     SkPaint paint;
    67     annotate_paint(paint, SkAnnotationKeys::URL_Key(), value);
    68     canvas->drawRect(rect, paint);
    69 }
    71 void SkAnnotateNamedDestination(SkCanvas* canvas, const SkPoint& point, SkData* name) {
    72     if (NULL == name) {
    73         return;
    74     }
    75     SkPaint paint;
    76     annotate_paint(paint, SkAnnotationKeys::Define_Named_Dest_Key(), name);
    77     canvas->drawPoint(point.x(), point.y(), paint);
    78 }
    80 void SkAnnotateLinkToDestination(SkCanvas* canvas, const SkRect& rect, SkData* name) {
    81     if (NULL == name) {
    82         return;
    83     }
    84     SkPaint paint;
    85     annotate_paint(paint, SkAnnotationKeys::Link_Named_Dest_Key(), name);
    86     canvas->drawRect(rect, paint);
    87 }

mercurial