1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // 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
|