• Raphael Kubo da Costa's avatar
    chrome/browser: Replace some forward declarations with actual includes · cf4c534f
    Raphael Kubo da Costa authored
    This fixes the GCC build which was failing like this:
    
        ../../base/scoped_observer.h: In instantiation of ‘void ScopedObserver<Source, Observer>::RemoveAll() [with Source = TabStripModel; Observer = TabStripModelObserver]’:
        ../../base/scoped_observer.h:26:5:   required from ‘ScopedObserver<Source, Observer>::~ScopedObserver() [with Source = TabStripModel; Observer = TabStripModelObserver]’
        ../../chrome/browser/ui/views/extensions/extension_popup.h:115:70:   required from here
        ../../base/scoped_observer.h:45:20: error: invalid use of incomplete type ‘class TabStripModel’
               sources_[i]->RemoveObserver(observer_);
               ~~~~~~~~~~~~~^~~~~~~~~~~~~~
    
    This is caused by https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89311 ("Brace
    initialization needlessly invokes destructor"), i.e. having something like
    
        ScopedObserver<T, U> observer_{this};
    
    in a header declaration requires T and U to be fully declared because
    ScopedObserver's destructor references them. In a few cases, T was only
    forward-declared.
    
    Bug: 819294
    Change-Id: Ie5b9dc2745e27d4532c5539e3845a8c9147a0595
    Reviewed-on: https://chromium-review.googlesource.com/c/1472576
    Auto-Submit: Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
    Commit-Queue: Alan Cutter <alancutter@chromium.org>
    Reviewed-by: default avatarFinnur Thorarinsson <finnur@chromium.org>
    Reviewed-by: default avatarAlan Cutter <alancutter@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#632385}
    cf4c534f
extension_popup.h 4.2 KB