diff options
Diffstat (limited to 'chrome/browser/base_history_model.cc')
| -rw-r--r-- | chrome/browser/base_history_model.cc | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/chrome/browser/base_history_model.cc b/chrome/browser/base_history_model.cc deleted file mode 100644 index f8e5d17..0000000 --- a/chrome/browser/base_history_model.cc +++ /dev/null @@ -1,158 +0,0 @@ -// Copyright (c) 2006-2008 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 "chrome/browser/base_history_model.h" - -#include "base/gfx/jpeg_codec.h" -#include "base/gfx/png_decoder.h" -#include "chrome/browser/profile.h" -#include "chrome/common/resource_bundle.h" -#include "grit/theme_resources.h" -#include "SkBitmap.h" - -// Size of the favicon and thumbnail caches. -static const int kThumbnailCacheSize = 100; - -// Icon to display when one isn't found for the page. -static SkBitmap* kDefaultFavicon = NULL; - -// static -const int BaseHistoryModel::kHistoryScopeMonths = 18; - -BaseHistoryModel::BaseHistoryModel(Profile* profile) - : profile_(profile), - observer_(NULL), - is_search_results_(false), - thumbnails_(kThumbnailCacheSize), - favicons_(kThumbnailCacheSize) { - if (!kDefaultFavicon) { - kDefaultFavicon = ResourceBundle::GetSharedInstance(). - GetBitmapNamed(IDR_DEFAULT_FAVICON); - } -} - -BaseHistoryModel::~BaseHistoryModel() { -} - -void BaseHistoryModel::SetObserver(BaseHistoryModelObserver* observer) { - observer_ = observer; -} - -BaseHistoryModelObserver* BaseHistoryModel::GetObserver() const { - return observer_; -} - -SkBitmap* BaseHistoryModel::GetThumbnail(int index) { - return GetImage(THUMBNAIL, index); -} - -SkBitmap* BaseHistoryModel::GetFavicon(int index) { - SkBitmap* favicon = GetImage(FAVICON, index); - return favicon ? favicon : kDefaultFavicon; -} - -void BaseHistoryModel::AboutToScheduleRequest() { - if (observer_ && cancelable_consumer_.PendingRequestCount() == 0) - observer_->ModelBeginWork(); -} - -void BaseHistoryModel::RequestCompleted() { - if (observer_ && cancelable_consumer_.PendingRequestCount() == 1) - observer_->ModelEndWork(); -} - -SkBitmap* BaseHistoryModel::GetImage(ImageType image_type, int index) { -#ifndef NDEBUG - DCHECK(IsValidIndex(index)); -#endif - history::URLID id = GetURLID(index); - DCHECK(id); - - CacheType* cache = (image_type == THUMBNAIL) ? &thumbnails_ : &favicons_; - CacheType::iterator iter = cache->Get(id); - if (iter != cache->end()) { - // Empty bitmaps indicate one that is pending a load. We still return NULL - // in this case. - return iter->second.getSize() ? &iter->second : NULL; - } - - HistoryService* history_service = - profile_->GetHistoryService(Profile::EXPLICIT_ACCESS); - if (!history_service) - return NULL; - - // The entry isn't cached, ask the history service for it. - - // Add an entry to the cache. This ensures we don't request the same page - // more than once. - cache->Put(id, SkBitmap()); - - // If this is the first request, we need to notify our delegate we're - // beginning work. - AboutToScheduleRequest(); - - // Start the request & associate the page ID with this thumbnail request. - HistoryService::Handle request; - if (image_type == THUMBNAIL) { - request = history_service->GetPageThumbnail(GetURL(index), - &cancelable_consumer_, - NewCallback(this, &BaseHistoryModel::OnThumbnailDataAvailable)); - } else { - request = history_service->GetFavIconForURL(GetURL(index), - &cancelable_consumer_, - NewCallback(this, &BaseHistoryModel::OnFaviconDataAvailable)); - } - cancelable_consumer_.SetClientData(history_service, request, id); - return NULL; -} - -void BaseHistoryModel::OnThumbnailDataAvailable( - HistoryService::Handle request_handle, - scoped_refptr<RefCountedBytes> data) { - RequestCompleted(); - - if (!data || data->data.empty()) { // This gets called on failure too. - return; - } - - // The client data for this request is the page ID for the thumbnail. - HistoryService* history_service = - profile_->GetHistoryService(Profile::EXPLICIT_ACCESS); - history::URLID page = cancelable_consumer_.GetClientData(history_service, - request_handle); - DCHECK(page > 0) << "Page ID is not found, maybe we forgot to set it"; - - scoped_ptr<SkBitmap> bitmap(JPEGCodec::Decode( - &data->data.front(), data->data.size())); - if (!bitmap.get()) - return; - - thumbnails_.Put(page, *bitmap); - - if (observer_) - observer_->ModelChanged(false); -} - -void BaseHistoryModel::OnFaviconDataAvailable( - HistoryService::Handle handle, - bool know_favicon, - scoped_refptr<RefCountedBytes> data, - bool expired, - GURL icon_url) { - RequestCompleted(); - - SkBitmap fav_icon; - if (!know_favicon || !data.get() || - !PNGDecoder::Decode(&data->data, &fav_icon)) { - return; - } - history::URLID page = - cancelable_consumer_.GetClientData( - profile_->GetHistoryService(Profile::EXPLICIT_ACCESS), handle); - favicons_.Put(page, fav_icon); - - if (observer_) - observer_->ModelChanged(false); -} - |
