OLD | NEW |
(Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.chrome.browser.browseractions; |
| 6 |
| 7 import android.os.StrictMode; |
| 8 |
| 9 import org.chromium.base.Callback; |
| 10 import org.chromium.base.Log; |
| 11 import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; |
| 12 import org.chromium.chrome.browser.tabmodel.TabPersistencePolicy; |
| 13 import org.chromium.chrome.browser.tabmodel.TabPersistentStore; |
| 14 |
| 15 import java.io.File; |
| 16 import java.util.List; |
| 17 import java.util.concurrent.Executor; |
| 18 |
| 19 import javax.annotation.Nullable; |
| 20 |
| 21 /** |
| 22 * Handles the Browser Actions Tab specific behaviors of tab persistence. |
| 23 */ |
| 24 public class BrowserActionsTabPersistencePolicy implements TabPersistencePolicy
{ |
| 25 static final String SAVED_STATE_DIRECTORY = "0"; |
| 26 |
| 27 private static final String TAG = "tabmodel"; |
| 28 |
| 29 /** Prevents two state directories from getting created simultaneously. */ |
| 30 private static final Object DIR_CREATION_LOCK = new Object(); |
| 31 |
| 32 private static File sStateDirectory; |
| 33 |
| 34 @Override |
| 35 public File getOrCreateStateDirectory() { |
| 36 return getOrCreateBrowserActionsModeStateDirectory(); |
| 37 } |
| 38 |
| 39 @Override |
| 40 public String getStateFileName() { |
| 41 return TabPersistentStore.getStateFileName("2"); |
| 42 } |
| 43 |
| 44 @Override |
| 45 public boolean shouldMergeOnStartup() { |
| 46 return false; |
| 47 } |
| 48 |
| 49 @Override |
| 50 @Nullable |
| 51 public String getStateToBeMergedFileName() { |
| 52 return null; |
| 53 } |
| 54 |
| 55 @Override |
| 56 public boolean performInitialization(Executor executor) { |
| 57 return true; |
| 58 } |
| 59 |
| 60 @Override |
| 61 public void waitForInitializationToFinish() {} |
| 62 |
| 63 @Override |
| 64 public boolean isMergeInProgress() { |
| 65 return false; |
| 66 } |
| 67 |
| 68 @Override |
| 69 public void setMergeInProgress(boolean isStarted) { |
| 70 assert false : "Merge not supported in Browser Actions"; |
| 71 } |
| 72 |
| 73 @Override |
| 74 public void cancelCleanupInProgress() {} |
| 75 |
| 76 @Override |
| 77 public void cleanupUnusedFiles(Callback<List<String>> filesToDelete) {} |
| 78 |
| 79 @Override |
| 80 public void setTabContentManager(TabContentManager cache) {} |
| 81 |
| 82 @Override |
| 83 public void notifyStateLoaded(int tabCountAtStartup) {} |
| 84 |
| 85 @Override |
| 86 public void destroy() {} |
| 87 |
| 88 /** |
| 89 * The folder where the state should be saved to. |
| 90 * @return A file representing the directory that contains TabModelSelector
states. |
| 91 */ |
| 92 public static File getOrCreateBrowserActionsModeStateDirectory() { |
| 93 synchronized (DIR_CREATION_LOCK) { |
| 94 if (sStateDirectory == null) { |
| 95 sStateDirectory = new File( |
| 96 TabPersistentStore.getOrCreateBaseStateDirectory(), SAVE
D_STATE_DIRECTORY); |
| 97 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWr
ites(); |
| 98 try { |
| 99 if (!sStateDirectory.exists() && !sStateDirectory.mkdirs())
{ |
| 100 Log.e(TAG, "Failed to create state folder: " + sStateDir
ectory); |
| 101 } |
| 102 } finally { |
| 103 StrictMode.setThreadPolicy(oldPolicy); |
| 104 } |
| 105 } |
| 106 } |
| 107 return sStateDirectory; |
| 108 } |
| 109 } |
OLD | NEW |