// Copyright 2016 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.offlinepages; import org.chromium.components.bookmarks.BookmarkId; import java.util.UUID; /** * Object to hold a client identifier for an offline page. */ public class ClientId { private String mNamespace; private String mId; public ClientId(String namespace, String id) { mNamespace = namespace; mId = id; } public String getNamespace() { return mNamespace; } public String getId() { return mId; } @Override public boolean equals(Object o) { if (o instanceof ClientId) { ClientId otherId = (ClientId) o; return otherId.getNamespace().equals(mNamespace) && otherId.getId().equals(mId); } return false; } @Override public int hashCode() { return (mNamespace + ":" + mId).hashCode(); } /** * Create a client id for a bookmark * @param id The bookmark id to wrap. * @return A {@link ClientId} that represents this BookmarkId. */ public static ClientId createClientIdForBookmarkId(BookmarkId id) { if (id == null) return null; return new ClientId(OfflinePageBridge.BOOKMARK_NAMESPACE, id.toString()); } /** * Create a client id for a namespace. * @param namespace The namespace for the client id. * @return A {@link ClientId} for this namespace with generated UUID. */ public static ClientId createGuidClientIdForNamespace(String namespace) { String uuid = UUID.randomUUID().toString(); return new ClientId(namespace, uuid); } }