blob: eead2a8143cd2a0b0c936f61b537e87c74846f5f [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.cookies;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
/**
* Java representation of net/cookies/canonical_cookie.h.
*/
class CanonicalCookie {
private final String mUrl;
private final String mName;
private final String mValue;
private final String mDomain;
private final String mPath;
private final long mCreation;
private final long mExpiration;
private final long mLastAccess;
private final boolean mSecure;
private final boolean mHttpOnly;
private final boolean mSameSite;
private final int mPriority;
/** Constructs a CanonicalCookie */
CanonicalCookie(String url, String name, String value, String domain, String path,
long creation, long expiration, long lastAccess, boolean secure, boolean httpOnly,
boolean sameSite, int priority) {
mUrl = url;
mName = name;
mValue = value;
mDomain = domain;
mPath = path;
mCreation = creation;
mExpiration = expiration;
mLastAccess = lastAccess;
mSecure = secure;
mHttpOnly = httpOnly;
mSameSite = sameSite;
mPriority = priority;
}
/** @return Priority of the cookie. */
int getPriority() {
return mPriority;
}
/** @return True if the cookie is HTTP only. */
boolean isHttpOnly() {
return mHttpOnly;
}
/** @return True if the cookie is Same-Site. */
boolean isSameSite() {
return mSameSite;
}
/** @return True if the cookie is secure. */
boolean isSecure() {
return mSecure;
}
/** @return Last accessed time. */
long getLastAccessDate() {
return mLastAccess;
}
/** @return Expiration time. */
long getExpirationDate() {
return mExpiration;
}
/** @return Creation time. */
long getCreationDate() {
return mCreation;
}
/** @return Cookie name. */
String getName() {
return mName;
}
/** @return Cookie path. */
String getPath() {
return mPath;
}
/** @return Cookie URL. */
String getUrl() {
return mUrl;
}
/** @return Cookie domain. */
String getDomain() {
return mDomain;
}
/** @return Cookie value. */
String getValue() {
return mValue;
}
/**
* Serializes for saving to disk. Does not close the stream.
* It is up to the caller to do so.
*
* @param out Stream to write the cookie to.
*/
void saveToStream(DataOutputStream out) throws IOException {
out.writeUTF(mUrl);
out.writeUTF(mName);
out.writeUTF(mValue);
out.writeUTF(mDomain);
out.writeUTF(mPath);
out.writeLong(mCreation);
out.writeLong(mExpiration);
out.writeLong(mLastAccess);
out.writeBoolean(mSecure);
out.writeBoolean(mHttpOnly);
out.writeBoolean(mSameSite);
out.writeInt(mPriority);
}
/**
* Constructs a cookie by deserializing a single entry from the
* input stream.
*
* @param in Stream to read a cookie entry from.
*/
static CanonicalCookie createFromStream(DataInputStream in)
throws IOException {
return new CanonicalCookie(in.readUTF(), in.readUTF(), in.readUTF(), in.readUTF(),
in.readUTF(), in.readLong(), in.readLong(), in.readLong(), in.readBoolean(),
in.readBoolean(), in.readBoolean(), in.readInt());
}
}