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/search/search.h"
      8 #include "chrome/browser/ui/omnibox/omnibox_view.h"
      9 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
     10 #include "content/public/browser/navigation_controller.h"
     11 #include "content/public/browser/navigation_entry.h"
     12 #include "content/public/browser/web_contents.h"
     13 #include "ui/views/view.h"
     14 
     15 using content::NavigationController;
     16 using content::NavigationEntry;
     17 using content::WebContents;
     18 
     19 PageInfoHelper::PageInfoHelper(const views::View* owner,
     20                                LocationBarView* location_bar)
     21     : owner_(owner),
     22       location_bar_(location_bar) {
     23 }
     24 
     25 void PageInfoHelper::ProcessEvent(const ui::LocatedEvent& event) {
     26   if (!owner_->HitTestPoint(event.location()))
     27     return;
     28 
     29   WebContents* tab = location_bar_->GetWebContents();
     30   if (!tab)
     31     return;
     32 
     33   // Important to use GetVisibleEntry to match what's showing in the omnibox.
     34   NavigationEntry* nav_entry = tab->GetController().GetVisibleEntry();
     35   // The visible entry can be NULL in the case of window.open("").
     36   if (!nav_entry)
     37     return;
     38 
     39   location_bar_->delegate()->ShowWebsiteSettings(
     40       tab, nav_entry->GetURL(), nav_entry->GetSSL());
     41 }
     42