gfx/skia/trunk/src/images/SkMovie.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.

     2 /*
     3  * Copyright 2011 Google Inc.
     4  *
     5  * Use of this source code is governed by a BSD-style license that can be
     6  * found in the LICENSE file.
     7  */
     8 #include "SkMovie.h"
     9 #include "SkCanvas.h"
    10 #include "SkPaint.h"
    12 // We should never see this in normal operation since our time values are
    13 // 0-based. So we use it as a sentinal.
    14 #define UNINITIALIZED_MSEC ((SkMSec)-1)
    16 SkMovie::SkMovie()
    17 {
    18     fInfo.fDuration = UNINITIALIZED_MSEC;  // uninitialized
    19     fCurrTime = UNINITIALIZED_MSEC; // uninitialized
    20     fNeedBitmap = true;
    21 }
    23 void SkMovie::ensureInfo()
    24 {
    25     if (fInfo.fDuration == UNINITIALIZED_MSEC && !this->onGetInfo(&fInfo))
    26         memset(&fInfo, 0, sizeof(fInfo));   // failure
    27 }
    29 SkMSec SkMovie::duration()
    30 {
    31     this->ensureInfo();
    32     return fInfo.fDuration;
    33 }
    35 int SkMovie::width()
    36 {
    37     this->ensureInfo();
    38     return fInfo.fWidth;
    39 }
    41 int SkMovie::height()
    42 {
    43     this->ensureInfo();
    44     return fInfo.fHeight;
    45 }
    47 int SkMovie::isOpaque()
    48 {
    49     this->ensureInfo();
    50     return fInfo.fIsOpaque;
    51 }
    53 bool SkMovie::setTime(SkMSec time)
    54 {
    55     SkMSec dur = this->duration();
    56     if (time > dur)
    57         time = dur;
    59     bool changed = false;
    60     if (time != fCurrTime)
    61     {
    62         fCurrTime = time;
    63         changed = this->onSetTime(time);
    64         fNeedBitmap |= changed;
    65     }
    66     return changed;
    67 }
    69 const SkBitmap& SkMovie::bitmap()
    70 {
    71     if (fCurrTime == UNINITIALIZED_MSEC)    // uninitialized
    72         this->setTime(0);
    74     if (fNeedBitmap)
    75     {
    76         if (!this->onGetBitmap(&fBitmap))   // failure
    77             fBitmap.reset();
    78         fNeedBitmap = false;
    79     }
    80     return fBitmap;
    81 }
    83 ////////////////////////////////////////////////////////////////////
    85 #include "SkStream.h"
    87 SkMovie* SkMovie::DecodeMemory(const void* data, size_t length) {
    88     SkMemoryStream stream(data, length, false);
    89     return SkMovie::DecodeStream(&stream);
    90 }
    92 SkMovie* SkMovie::DecodeFile(const char path[]) {
    93     SkAutoTUnref<SkStreamRewindable> stream(SkStream::NewFromFile(path));
    94     return stream.get() ? SkMovie::DecodeStream(stream) : NULL;
    95 }

mercurial