Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(443)

Side by Side Diff: chrome/browser/history/history_backend.h

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/history/history.cc ('k') | chrome/browser/history/history_backend.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_ 5 #ifndef CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_
6 #define CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_ 6 #define CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_
7 7
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/gtest_prod_util.h" 12 #include "base/gtest_prod_util.h"
13 #include "base/memory/mru_cache.h" 13 #include "base/memory/mru_cache.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "chrome/browser/cancelable_request.h" 15 #include "chrome/browser/cancelable_request.h"
16 #include "chrome/browser/history/archived_database.h" 16 #include "chrome/browser/history/archived_database.h"
17 #include "chrome/browser/history/expire_history_backend.h" 17 #include "chrome/browser/history/expire_history_backend.h"
18 #include "chrome/browser/history/history_database.h" 18 #include "chrome/browser/history/history_database.h"
19 #include "chrome/browser/history/history_marshaling.h" 19 #include "chrome/browser/history/history_marshaling.h"
20 #include "chrome/browser/history/history_types.h" 20 #include "chrome/browser/history/history_types.h"
21 #include "chrome/browser/history/text_database_manager.h" 21 #include "chrome/browser/history/text_database_manager.h"
22 #include "chrome/browser/history/thumbnail_database.h" 22 #include "chrome/browser/history/thumbnail_database.h"
23 #include "chrome/browser/history/visit_tracker.h" 23 #include "chrome/browser/history/visit_tracker.h"
24 #include "chrome/browser/search_engines/template_url_id.h" 24 #include "chrome/browser/search_engines/template_url_id.h"
25 #include "sql/init_status.h" 25 #include "sql/init_status.h"
26 #include "ui/base/layout.h"
26 27
27 class BookmarkService; 28 class BookmarkService;
28 class TestingProfile; 29 class TestingProfile;
29 struct ThumbnailScore; 30 struct ThumbnailScore;
30 31
31 namespace content { 32 namespace content {
32 struct DownloadPersistentStoreInfo; 33 struct DownloadPersistentStoreInfo;
33 } 34 }
34 35
35 namespace history { 36 namespace history {
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 // 242 //
242 // Exposed for testing reasons. 243 // Exposed for testing reasons.
243 void GetPageThumbnailDirectly( 244 void GetPageThumbnailDirectly(
244 const GURL& page_url, 245 const GURL& page_url,
245 scoped_refptr<base::RefCountedBytes>* data); 246 scoped_refptr<base::RefCountedBytes>* data);
246 247
247 void MigrateThumbnailsDatabase(); 248 void MigrateThumbnailsDatabase();
248 249
249 // Favicon ------------------------------------------------------------------- 250 // Favicon -------------------------------------------------------------------
250 251
251 void GetFavicon(scoped_refptr<GetFaviconRequest> request, 252 void GetFavicons(scoped_refptr<GetFaviconRequest> request,
252 const GURL& icon_url, 253 const std::vector<GURL>& icon_urls,
253 int icon_types); 254 int icon_types,
255 int desired_size_in_dip,
256 const std::vector<ui::ScaleFactor>& desired_scale_factors);
254 257
255 void GetFaviconForURL(scoped_refptr<GetFaviconRequest> request, 258 void GetFaviconsForURL(
256 const GURL& page_url, 259 scoped_refptr<GetFaviconRequest> request,
257 int icon_types); 260 const GURL& page_url,
261 int icon_types,
262 int desired_size_in_dip,
263 const std::vector<ui::ScaleFactor>& desired_scale_factors);
258 264
259 void GetFaviconForID(scoped_refptr<GetFaviconRequest> request, FaviconID id); 265 void GetFaviconForID(
266 scoped_refptr<GetFaviconRequest> request,
267 FaviconID favicon_id,
268 int desired_size_in_dip,
269 ui::ScaleFactor desired_scale_factor);
260 270
261 void SetFavicon(const GURL& page_url, 271 void UpdateFaviconMappingsAndFetch(
262 const GURL& icon_url, 272 scoped_refptr<GetFaviconRequest> request,
263 scoped_refptr<base::RefCountedMemory> data, 273 const GURL& page_url,
264 IconType icon_type); 274 const std::vector<GURL>& icon_urls,
275 int icon_types,
276 int desired_size_in_dip,
277 const std::vector<ui::ScaleFactor>& desired_scale_factors);
265 278
266 void UpdateFaviconMappingAndFetch(scoped_refptr<GetFaviconRequest> request, 279 void SetFavicons(
267 const GURL& page_url, 280 const GURL& page_url,
268 const GURL& icon_url, 281 IconType icon_type,
269 IconType icon_type); 282 const std::vector<FaviconBitmapData>& favicon_bitmap_data,
283 const IconURLSizesMap& icon_url_sizes);
270 284
271 void SetFaviconOutOfDateForPage(const GURL& page_url); 285 void SetFaviconsOutOfDateForPage(const GURL& page_url);
272 286
273 void CloneFavicon(const GURL& old_page_url, const GURL& new_page_url); 287 void CloneFavicons(const GURL& old_page_url, const GURL& new_page_url);
274 288
275 void SetImportedFavicons( 289 void SetImportedFavicons(
276 const std::vector<ImportedFaviconUsage>& favicon_usage); 290 const std::vector<ImportedFaviconUsage>& favicon_usage);
277 291
278 // Downloads ----------------------------------------------------------------- 292 // Downloads -----------------------------------------------------------------
279 293
280 void GetNextDownloadId(scoped_refptr<DownloadNextIdRequest> request); 294 void GetNextDownloadId(scoped_refptr<DownloadNextIdRequest> request);
281 void QueryDownloads(scoped_refptr<DownloadQueryRequest> request); 295 void QueryDownloads(scoped_refptr<DownloadQueryRequest> request);
282 void CleanUpInProgressEntries(); 296 void CleanUpInProgressEntries();
283 void UpdateDownload(const content::DownloadPersistentStoreInfo& data); 297 void UpdateDownload(const content::DownloadPersistentStoreInfo& data);
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 friend class HistoryTest; // So the unit tests can poke our innards. 466 friend class HistoryTest; // So the unit tests can poke our innards.
453 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, DeleteAll); 467 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, DeleteAll);
454 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, DeleteAllThenAddData); 468 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, DeleteAllThenAddData);
455 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, ImportedFaviconsTest); 469 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, ImportedFaviconsTest);
456 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, URLsNoLongerBookmarked); 470 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, URLsNoLongerBookmarked);
457 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, StripUsernamePasswordTest); 471 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, StripUsernamePasswordTest);
458 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, DeleteThumbnailsDatabaseTest); 472 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, DeleteThumbnailsDatabaseTest);
459 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddPageVisitSource); 473 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddPageVisitSource);
460 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddPageArgsSource); 474 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddPageArgsSource);
461 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddVisitsSource); 475 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddVisitsSource);
476 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetMostRecentVisits);
462 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsSource); 477 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsSource);
463 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsTransitions); 478 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, RemoveVisitsTransitions);
464 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationVisitSource); 479 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationVisitSource);
465 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping); 480 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, MigrationIconMapping);
466 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconMapping); 481 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
467 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, AddOrUpdateIconMapping); 482 SetFaviconMappingsForPageAndRedirects);
468 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetSameFaviconURLForTwoPages); 483 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
469 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetMostRecentVisits); 484 SetFaviconMappingsForPageDuplicates);
470 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetFaviconForURL); 485 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFavicons);
486 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
487 SetFaviconsSameFaviconURLForTwoPages);
488 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconsDeleteBitmaps);
489 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, SetFaviconsReplaceBitmapData);
490 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
491 UpdateFaviconMappingsAndFetchMultipleIconTypes);
492 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetFaviconsFromDBEmpty);
493 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
494 GetFaviconsFromDBNoFaviconBitmaps);
495 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
496 GetFaviconsFromDBSelectClosestMatch);
497 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetFaviconsFromDBSingleIconURL);
498 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetFaviconsFromDBIconType);
499 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, GetFaviconsFromDBExpired);
471 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, 500 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest,
472 CloneFaviconIsRestrictedToSameDomain); 501 CloneFaviconIsRestrictedToSameDomain);
473 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, QueryFilteredURLs); 502 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, QueryFilteredURLs);
474 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, UpdateVisitDuration); 503 FRIEND_TEST_ALL_PREFIXES(HistoryBackendTest, UpdateVisitDuration);
475 504
476 friend class ::TestingProfile; 505 friend class ::TestingProfile;
477 506
478 // Computes the name of the specified database on disk. 507 // Computes the name of the specified database on disk.
479 FilePath GetThumbnailFileName() const; 508 FilePath GetThumbnailFileName() const;
480 509
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 // Update the segment information. This is called internally when a page is 601 // Update the segment information. This is called internally when a page is
573 // added. Return the segment id of the segment that has been updated. 602 // added. Return the segment id of the segment that has been updated.
574 SegmentID UpdateSegments(const GURL& url, 603 SegmentID UpdateSegments(const GURL& url,
575 VisitID from_visit, 604 VisitID from_visit,
576 VisitID visit_id, 605 VisitID visit_id,
577 content::PageTransition transition_type, 606 content::PageTransition transition_type,
578 const base::Time ts); 607 const base::Time ts);
579 608
580 // Favicons ------------------------------------------------------------------ 609 // Favicons ------------------------------------------------------------------
581 610
582 // Used by both UpdateFaviconMappingAndFetch and GetFavicon. 611 // Used by both UpdateFaviconMappingsAndFetch and GetFavicons.
583 // If page_url is non-null and SetFavicon has previously been invoked for 612 // If |page_url| is non-null, the icon urls for |page_url| (and all
584 // icon_url the favicon url for page_url (and all redirects) is set to 613 // redirects) are set to the subset of |icon_urls| for which icons are
585 // icon_url. 614 // already stored in the database.
586 // Only a single type can be given in icon_type when page_url is specified. 615 // If |page_url| is non-null, |icon_types| can be multiple icon types
587 void UpdateFaviconMappingAndFetchImpl( 616 // only if |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON.
617 // If multiple icon types are specified, |page_url| will be mapped to the
618 // icon URLs of the largest type available in the database.
619 void UpdateFaviconMappingsAndFetchImpl(
620 scoped_refptr<GetFaviconRequest> request,
588 const GURL* page_url, 621 const GURL* page_url,
589 const GURL& icon_url, 622 const std::vector<GURL>& icon_urls,
590 scoped_refptr<GetFaviconRequest> request, 623 int icon_types,
591 int icon_type); 624 int desired_size_in_dip,
625 const std::vector<ui::ScaleFactor>& desired_scale_factors);
592 626
593 // Sets the favicon url id for page_url to id. This will also broadcast 627 // Set the favicon bitmaps for |icon_id|.
594 // notifications as necessary. 628 // For each entry in |favicon_bitmap_data|, if a favicon bitmap already
595 void SetFaviconMapping(const GURL& page_url, 629 // exists at the entry's pixel size, replace the favicon bitmap's data with
596 FaviconID id, 630 // the entry's bitmap data. Otherwise add a new favicon bitmap.
597 IconType icon_type); 631 void SetFaviconBitmaps(
632 FaviconID icon_id,
633 const std::vector<FaviconBitmapData>& favicon_bitmap_data);
598 634
599 // Updates the FaviconID associated with the url of a page. If there is an 635 // Returns true if |favicon_bitmap_data| and |icon_url_sizes| passed to
600 // existing mapping between |page_url| and |id| this does nothing and returns 636 // SetFavicons() are valid.
601 // false. If the mapping needs to be added or updated, true is returned. If 637 // Criteria:
602 // there is an existing mapping but it does not map to |id|, then the |id| of 638 // 1) |icon_url_sizes| contains no more than
603 // the replaced FaviconID is set in |replaced_icon_id|. 639 // kMaxFaviconsPerPage icon URLs.
604 bool AddOrUpdateIconMapping(const GURL& page_url, 640 // kMaxFaviconBitmapsPerIconURL favicon sizes for each icon URL.
605 FaviconID id, 641 // 2) The icon URLs and favicon sizes of |favicon_bitmap_data| are a subset
606 IconType icon_type, 642 // of |icon_url_sizes|.
607 FaviconID* replaced_icon_id); 643 // 3) The favicon sizes for entries in |icon_url_sizes| which have associated
644 // data in |favicon_bitmap_data| is not history::GetDefaultFaviconSizes().
645 // 4) FaviconBitmapData::bitmap_data contains non NULL bitmap data.
646 bool ValidateSetFaviconsParams(
647 const std::vector<FaviconBitmapData>& favicon_bitmap_data,
648 const IconURLSizesMap& icon_url_sizes) const;
649
650 // Sets the sizes that the thumbnail database knows that the favicon at
651 // |icon_id| is available from the web. See history_types.h for a more
652 // detailed description of FaviconSizes.
653 // Deletes any favicon bitmaps currently mapped to |icon_id| whose pixel
654 // sizes are not contained in |favicon_sizes|.
655 void SetFaviconSizes(FaviconID icon_id, const FaviconSizes& favicon_sizes);
656
657 // Returns true if there are favicons for |page_url| and one of the types in
658 // |icon_types|.
659 // |favicon_bitmap_results| is set to the favicon bitmaps which most closely
660 // match |desired_size_in_dip| and |desired_scale_factors|. If
661 // |desired_size_in_dip| is 0, the largest favicon bitmap with one of the icon
662 // types in |icon_types| is returned. If |icon_types| contains multiple icon
663 // types and there are several matched icon types in the database, results
664 // will only be returned for a single icon type in the priority of
665 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. See the comment for
666 // GetFaviconResultsForBestMatch() for more details on how
667 // |favicon_bitmap_results| is constructed.
668 // |icon_url_sizes| is set to a mapping of all the icon URLs which are mapped
669 // to |page_url| to the sizes of the favicon bitmaps available at each icon
670 // URL on the web.
671 bool GetFaviconsFromDB(
672 const GURL& page_url,
673 int icon_types,
674 const int desired_size_in_dip,
675 const std::vector<ui::ScaleFactor>& desired_scale_factors,
676 std::vector<FaviconBitmapResult>* favicon_bitmap_results,
677 IconURLSizesMap* icon_url_sizes);
678
679 // Returns the favicon bitmaps which most closely match |desired_size_in_dip|
680 // and |desired_scale_factors| in |favicon_bitmap_results|. If
681 // |desired_size_in_dip| is 0, only the largest favicon bitmap is returned.
682 // Goodness is computed via SelectFaviconBitmapIDs(). It is computed on a
683 // per favicon id basis, thus all |favicon_bitmap_results| are guaranteed to
684 // be for the same FaviconID. |favicon_bitmap_results| will have at most one
685 // entry for each desired scale factor. There will be less entries if the same
686 // favicon bitmap is the best result for multiple scale factors.
687 // Returns true if there were no errors.
688 bool GetFaviconBitmapResultsForBestMatch(
689 const std::vector<FaviconID>& candidate_favicon_ids,
690 int desired_size_in_dip,
691 const std::vector<ui::ScaleFactor>& desired_scale_factors,
692 std::vector<FaviconBitmapResult>* favicon_bitmap_results);
693
694 // Build mapping of the icon URLs for |favicon_ids| to the sizes of the
695 // favicon bitmaps available at each icon URL on the web. Favicon bitmaps
696 // might not be cached in the thumbnail database for any of the sizes in the
697 // returned map. See history_types.h for a more detailed description of
698 // IconURLSizesMap.
699 // Returns true if map was successfully built.
700 bool BuildIconURLSizesMap(const std::vector<FaviconID>& favicon_ids,
701 IconURLSizesMap* icon_url_sizes);
702
703 // Maps the favicon ids in |icon_ids| to |page_url| (and all redirects)
704 // for |icon_type|. This will also broadcast notifications as necessary.
705 void SetFaviconMappingsForPageAndRedirects(
706 const GURL& page_url,
707 IconType icon_type,
708 const std::vector<FaviconID>& icon_ids);
709
710 // Maps the favicon ids in |icon_ids| to |page_url| for |icon_type|.
711 // Returns true if the function changed some of |page_url|'s mappings.
712 bool SetFaviconMappingsForPage(const GURL& page_url,
713 IconType icon_type,
714 const std::vector<FaviconID>& icon_ids);
608 715
609 // Generic stuff ------------------------------------------------------------- 716 // Generic stuff -------------------------------------------------------------
610 717
611 // Processes the next scheduled HistoryDBTask, scheduling this method 718 // Processes the next scheduled HistoryDBTask, scheduling this method
612 // to be invoked again if there are more tasks that need to run. 719 // to be invoked again if there are more tasks that need to run.
613 void ProcessDBTaskImpl(); 720 void ProcessDBTaskImpl();
614 721
615 // Release all tasks in history_db_tasks_ and clears it. 722 // Release all tasks in history_db_tasks_ and clears it.
616 void ReleaseDBTasks(); 723 void ReleaseDBTasks();
617 724
(...skipping 23 matching lines...) Expand all
641 // set of URLs in the URL table (these should correspond to the bookmarked 748 // set of URLs in the URL table (these should correspond to the bookmarked
642 // URLs). 749 // URLs).
643 // 750 //
644 // The IDs of the URLs may change. 751 // The IDs of the URLs may change.
645 bool ClearAllMainHistory(const URLRows& kept_urls); 752 bool ClearAllMainHistory(const URLRows& kept_urls);
646 753
647 // Returns the BookmarkService, blocking until it is loaded. This may return 754 // Returns the BookmarkService, blocking until it is loaded. This may return
648 // NULL during testing. 755 // NULL during testing.
649 BookmarkService* GetBookmarkService(); 756 BookmarkService* GetBookmarkService();
650 757
651 // If there is a favicon for |page_url| and one of the types in |icon_types|,
652 // |favicon| is set appropriately and true is returned.
653 bool GetFaviconFromDB(
654 const GURL& page_url,
655 int icon_types,
656 std::vector<FaviconBitmapResult>* favicon_bitmap_results);
657
658 // Get favicon by the given |favicon_id|, the |favicon| is set appropriately
659 // and true if returned on success, otherwise false is returned.
660 bool GetFaviconFromDB(
661 FaviconID favicon_id,
662 std::vector<FaviconBitmapResult>* favicon_bitmap_results);
663
664 // Notify any observers of an addition to the visit database. 758 // Notify any observers of an addition to the visit database.
665 void NotifyVisitObservers(const VisitRow& visit); 759 void NotifyVisitObservers(const VisitRow& visit);
666 760
667 // Data ---------------------------------------------------------------------- 761 // Data ----------------------------------------------------------------------
668 762
669 // Delegate. See the class definition above for more information. This will 763 // Delegate. See the class definition above for more information. This will
670 // be NULL before Init is called and after Cleanup, but is guaranteed 764 // be NULL before Init is called and after Cleanup, but is guaranteed
671 // non-NULL in between. 765 // non-NULL in between.
672 scoped_ptr<Delegate> delegate_; 766 scoped_ptr<Delegate> delegate_;
673 767
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 // Used to provide the Android ContentProvider APIs. 853 // Used to provide the Android ContentProvider APIs.
760 scoped_ptr<AndroidProviderBackend> android_provider_backend_; 854 scoped_ptr<AndroidProviderBackend> android_provider_backend_;
761 #endif 855 #endif
762 856
763 DISALLOW_COPY_AND_ASSIGN(HistoryBackend); 857 DISALLOW_COPY_AND_ASSIGN(HistoryBackend);
764 }; 858 };
765 859
766 } // namespace history 860 } // namespace history
767 861
768 #endif // CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_ 862 #endif // CHROME_BROWSER_HISTORY_HISTORY_BACKEND_H_
OLDNEW
« no previous file with comments | « chrome/browser/history/history.cc ('k') | chrome/browser/history/history_backend.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698