Home | History | Annotate | Download | only in location_bar
      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
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/ui/views/location_bar/page_info_helper.h"
      6 
      7 #include "chrome/browser/ui/omnibox/omnibox_view.h"
      8 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
      9 #include "content/public/browser/navigation_controller.h"
     10 #include "content/public/browser/navigation_entry.h"
     11 #include "content/public/browser/web_contents.h"
     12 #include "ui/views/view.h"
     13 
     14 using content::NavigationController;
     15 using content::NavigationEntry;
     16 using content::WebContents;
     17 
     18 PageInfoHelper::PageInfoHelper(const views::View* owner,
     19                                LocationBarView* location_bar)
     20     : owner_(owner),
     21       location_bar_(location_bar) {
     22 }
     23 
     24 void PageInfoHelper::ProcessEvent(const ui::LocatedEvent& event) {
     25   if (!owner_->HitTestPoint(event.location()))
     26     return;
     27 
     28   // Do not show page info if the user has been editing the location
     29   // bar, or the location bar is at the NTP.
     30   if (location_bar_->GetLocationEntry()->IsEditingOrEmpty())
     31     return;
     32 
     33   WebContents* tab = location_bar_->GetWebContents();
     34   if (!tab)
     35     return;
     36   const NavigationController& controller = tab->GetController();
     37   // Important to use GetVisibleEntry to match what's showing in the omnibox.
     38   NavigationEntry* nav_entry = controller.GetVisibleEntry();
     39   if (!nav_entry) {
     40     NOTREACHED();
     41     return;
     42   }
     43 
     44   location_bar_->delegate()->ShowWebsiteSettings(
     45       tab, nav_entry->GetURL(), nav_entry->GetSSL());
     46 }
     47