1 /* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.camera.captureintent.state; 18 19 import com.android.camera.FatalErrorHandler; 20 import com.android.camera.stats.UsageStatistics; 21 import com.google.common.base.Optional; 22 23 import com.android.camera.async.RefCountBase; 24 import com.android.camera.captureintent.resource.ResourceConstructed; 25 import com.android.camera.captureintent.stateful.State; 26 import com.android.camera.captureintent.stateful.StateImpl; 27 import com.android.camera2.R; 28 import com.google.common.logging.eventprotos; 29 30 /** 31 * Represents a state that app is in an unrecoverable error state. Must show an 32 * error dialog and finish. 33 */ 34 public final class StateFatal extends StateImpl { 35 private final RefCountBase<ResourceConstructed> mResourceConstructed; 36 from( State previousState, RefCountBase<ResourceConstructed> resourceConstructed)37 public static StateFatal from( 38 State previousState, RefCountBase<ResourceConstructed> resourceConstructed) { 39 return new StateFatal(previousState, resourceConstructed); 40 } 41 StateFatal(State previousState, RefCountBase<ResourceConstructed> resourceConstructed)42 private StateFatal(State previousState, RefCountBase<ResourceConstructed> resourceConstructed) { 43 super(previousState); 44 mResourceConstructed = resourceConstructed; 45 mResourceConstructed.addRef(); 46 } 47 48 @Override onEnter()49 public Optional<State> onEnter() { 50 mResourceConstructed.get().getMainThread().execute(new Runnable() { 51 @Override 52 public void run() { 53 mResourceConstructed.get().getFatalErrorHandler().onGenericCameraAccessFailure(); 54 } 55 }); 56 return NO_CHANGE; 57 } 58 }