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

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 /*
     2  * Copyright 2010 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 "SkImageInfo.h"
     9 #include "SkReadBuffer.h"
    10 #include "SkWriteBuffer.h"
    12 static bool alpha_type_is_valid(SkAlphaType alphaType) {
    13     return (alphaType >= 0) && (alphaType <= kLastEnum_SkAlphaType);
    14 }
    16 static bool color_type_is_valid(SkColorType colorType) {
    17     return (colorType >= 0) && (colorType <= kLastEnum_SkColorType);
    18 }
    20 void SkImageInfo::unflatten(SkReadBuffer& buffer) {
    21     fWidth = buffer.read32();
    22     fHeight = buffer.read32();
    24     uint32_t packed = buffer.read32();
    25     SkASSERT(0 == (packed >> 16));
    26     fAlphaType = (SkAlphaType)((packed >> 8) & 0xFF);
    27     fColorType = (SkColorType)((packed >> 0) & 0xFF);
    28     buffer.validate(alpha_type_is_valid(fAlphaType) &&
    29                     color_type_is_valid(fColorType));
    30 }
    32 void SkImageInfo::flatten(SkWriteBuffer& buffer) const {
    33     buffer.write32(fWidth);
    34     buffer.write32(fHeight);
    36     SkASSERT(0 == (fAlphaType & ~0xFF));
    37     SkASSERT(0 == (fColorType & ~0xFF));
    38     uint32_t packed = (fAlphaType << 8) | fColorType;
    39     buffer.write32(packed);
    40 }

mercurial