// Copyright (c) 2012 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. #include "rlz/lib/rlz_lib_clear.h" #include "rlz/lib/assert.h" #include "rlz/lib/rlz_value_store.h" namespace rlz_lib { bool ClearAllProductEvents(Product product) { ScopedRlzValueStoreLock lock; RlzValueStore* store = lock.GetStore(); if (!store || !store->HasAccess(RlzValueStore::kWriteAccess)) return false; bool result; result = store->ClearAllProductEvents(product); result &= store->ClearAllStatefulEvents(product); return result; } void ClearProductState(Product product, const AccessPoint* access_points) { ScopedRlzValueStoreLock lock; RlzValueStore* store = lock.GetStore(); if (!store || !store->HasAccess(RlzValueStore::kWriteAccess)) return; // Delete all product specific state. VERIFY(ClearAllProductEvents(product)); VERIFY(store->ClearPingTime(product)); // Delete all RLZ's for access points being uninstalled. if (access_points) { for (int i = 0; access_points[i] != NO_ACCESS_POINT; i++) { VERIFY(store->ClearAccessPointRlz(access_points[i])); } } store->CollectGarbage(); } } // namespace rlz_lib