| /* |
| * Copyright (C) 2008 Esmertec AG. |
| * Copyright (C) 2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.android.mms.model; |
| |
| import java.util.ArrayList; |
| |
| import android.content.ContentResolver; |
| import android.provider.Settings; |
| |
| import com.google.android.mms.ContentType; |
| import com.android.mms.ContentRestrictionException; |
| import com.android.mms.ExceedMessageSizeException; |
| import com.android.mms.ResolutionException; |
| import com.android.mms.UnsupportContentTypeException; |
| |
| public class CarrierContentRestriction implements ContentRestriction { |
| public static final int IMAGE_WIDTH_LIMIT = 640; |
| public static final int IMAGE_HEIGHT_LIMIT = 480; |
| public static final int MESSAGE_SIZE_LIMIT = 300 * 1024; |
| |
| private static final ArrayList<String> sSupportedImageTypes; |
| private static final ArrayList<String> sSupportedAudioTypes; |
| private static final ArrayList<String> sSupportedVideoTypes; |
| |
| static { |
| sSupportedImageTypes = ContentType.getImageTypes(); |
| sSupportedAudioTypes = ContentType.getAudioTypes(); |
| sSupportedVideoTypes = ContentType.getVideoTypes(); |
| } |
| |
| public CarrierContentRestriction() { |
| } |
| |
| public void checkMessageSize(int messageSize, int increaseSize, ContentResolver resolver) |
| throws ContentRestrictionException { |
| if ( (messageSize < 0) || (increaseSize < 0) ) { |
| throw new ContentRestrictionException("Negative message size" |
| + " or increase size"); |
| } |
| int messageSizeLimit; |
| try { |
| // Don't cache the max message size. Grab it each time so we'll dynamically |
| // respond to changes made on the server. |
| messageSizeLimit = Integer.parseInt( |
| Settings.Gservices.getString(resolver, |
| Settings.Gservices.MMS_MAXIMUM_MESSAGE_SIZE)); |
| } catch (java.lang.NumberFormatException e) { |
| messageSizeLimit = MESSAGE_SIZE_LIMIT; |
| } |
| int newSize = messageSize + increaseSize; |
| if ( (newSize < 0) || (newSize > messageSizeLimit) ) { |
| throw new ExceedMessageSizeException("Exceed message size limitation"); |
| } |
| } |
| |
| public void checkResolution(int width, int height) throws ContentRestrictionException { |
| if ( (width > IMAGE_WIDTH_LIMIT) || (height > IMAGE_HEIGHT_LIMIT) ) { |
| throw new ResolutionException("content resolution exceeds restriction."); |
| } |
| } |
| |
| public void checkImageContentType(String contentType) |
| throws ContentRestrictionException { |
| if (null == contentType) { |
| throw new ContentRestrictionException("Null content type to be check"); |
| } |
| |
| if (!sSupportedImageTypes.contains(contentType)) { |
| throw new UnsupportContentTypeException("Unsupported image content type : " |
| + contentType); |
| } |
| } |
| |
| public void checkAudioContentType(String contentType) |
| throws ContentRestrictionException { |
| if (null == contentType) { |
| throw new ContentRestrictionException("Null content type to be check"); |
| } |
| |
| if (!sSupportedAudioTypes.contains(contentType)) { |
| throw new UnsupportContentTypeException("Unsupported audio content type : " |
| + contentType); |
| } |
| } |
| |
| public void checkVideoContentType(String contentType) |
| throws ContentRestrictionException { |
| if (null == contentType) { |
| throw new ContentRestrictionException("Null content type to be check"); |
| } |
| |
| if (!sSupportedVideoTypes.contains(contentType)) { |
| throw new UnsupportContentTypeException("Unsupported video content type : " |
| + contentType); |
| } |
| } |
| } |