1a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li/* 2a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * Copyright (C) 2012 The Android Open Source Project 3a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * 4a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * Licensed under the Apache License, Version 2.0 (the "License"); 5a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * you may not use this file except in compliance with the License. 6a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * You may obtain a copy of the License at 7a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * 8a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * http://www.apache.org/licenses/LICENSE-2.0 9a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * 10a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * Unless required by applicable law or agreed to in writing, software 11a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * distributed under the License is distributed on an "AS IS" BASIS, 12a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * See the License for the specific language governing permissions and 14a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * limitations under the License. 15a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li */ 16a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 17a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Lipackage com.android.gallery3d.data; 18a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 19a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Liimport com.android.gallery3d.app.GalleryApp; 20a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 21a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Lipublic class SecureSource extends MediaSource { 22a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li private GalleryApp mApplication; 23a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li private static PathMatcher mMatcher = new PathMatcher(); 24a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li private static final int SECURE_ALBUM = 0; 258868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li private static final int SECURE_UNLOCK = 1; 26a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 27a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li static { 28a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li mMatcher.add("/secure/all/*", SECURE_ALBUM); 298868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li mMatcher.add("/secure/unlock", SECURE_UNLOCK); 30a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li } 31a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 32a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li public SecureSource(GalleryApp context) { 33a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li super("secure"); 34a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li mApplication = context; 35a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li } 36a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 37a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li public static boolean isSecurePath(String path) { 38a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li return (SECURE_ALBUM == mMatcher.match(Path.fromString(path))); 39a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li } 40a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li 41a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li @Override 42a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li public MediaObject createMediaObject(Path path) { 43a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li switch (mMatcher.match(path)) { 448868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li case SECURE_ALBUM: { 458868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li DataManager dataManager = mApplication.getDataManager(); 468868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li MediaItem unlock = (MediaItem) dataManager.getMediaObject( 478868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li "/secure/unlock"); 488868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li return new SecureAlbum(path, mApplication, unlock); 498868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li } 508868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li case SECURE_UNLOCK: 518868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li return new UnlockImage(path, mApplication); 52a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li default: 53a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li throw new RuntimeException("bad path: " + path); 54a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li } 55a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li } 56a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li} 57