Sat, 03 Jan 2015 20:18:00 +0100
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 }