summaryrefslogtreecommitdiffstats
path: root/chrome/browser/navigation_controller.cc
Commit message (Collapse)AuthorAgeFilesLines
* This is the first pass at refactoring the interstitial page.jcampan@chromium.org2008-10-131-96/+120
| | | | | | | | | | | | | | | | | The SSL and malware blocking pages were doing similar things in 2 different classes. There is now a base class called InterstitialPage that contains the common logic. As part of that refactoring, the safe browsing was changed so that the SafeBrowsingBlockingPage is only used from the UI thread. This CL also adds transient entries to the navigation controller: that type of entry gets deleted as soon as a navigation occurs. It is used by interstitial that need to create such a temporary entry while they show. BUG=3013 TEST=Run the unit tests and ui tests. Review URL: http://codereview.chromium.org/6311 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@3324 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes crash in NavigationController that occured on closing tab ifsky@google.com2008-09-291-10/+12
| | | | | | | | | | | only navigation in tab was an interstitial. BUG=2964 TEST=Drag the following URL into Review URL: http://codereview.chromium.org/4337 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2688 0039d316-1c4b-4281-b951-d872f2087c98
* Reorganize the declarations to have some grouping and logical ordering in ↵brettw@google.com2008-09-261-4/+4
| | | | | | | | | tab contents and web contents. Reorder the derived classes overrides to match, and reorder the definitions of the functions to match the order in the header file. This doesn't actually change any code. I removed a few functions that were declared but never implemented (!) as well as some that were marked vitual but were never overridden. I renamed some things to make them more consistent. Review URL: http://codereview.chromium.org/5005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2634 0039d316-1c4b-4281-b951-d872f2087c98
* Remove DidNavigate from the tab contents delegate and all the related plumbing.brettw@google.com2008-09-241-44/+33
| | | | | | | | | | | I added additional information to the regular load commit notification so all interested parties can listen for that instead. I removed the old navigation type enum, and replaced it with the enum from the NavigationController, so it's now public. Review URL: http://codereview.chromium.org/3112 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2573 0039d316-1c4b-4281-b951-d872f2087c98
* This CL adds new UI tests for the SSL UI.jcampan@chromium.org2008-09-241-0/+1
| | | | | | | | | | | | | | | | | | | | Some more info: SSL UI Tests: Added new tests for redirects and frames. Also improved the mixed-content test to exercise the "block mixed-contents" preference and the show info-bar. Automation: For the new UI tests, added methods to tab_proxy and browser_proxy. The ones of most interest are GetLastNavigatinTime and WaitForNavigation that ensures we wait for a navigation to occur or have occured when taking actions that asynchronously trigger navigations. Resource loading: Added a flag to the response we get when loading a resource that indicates whether that resource was filtered (blocked or altered) by the security peer. We use this flag to notify back the browser when we report a load has been committed. This is so the SSL manager knows a frame has been filtered (in which case we have no cert info but should not consider that as unsafe). BUG=2004 Review URL: http://codereview.chromium.org/3165 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2553 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a crash when a frame was inserted into a popup and navigated. I added abrettw@google.com2008-09-241-8/+25
| | | | | | | | | | | | test for this case. I also checked the other navigation cases to see if we were relying on state from the renderer (which might be malicious) and the controller being in sync, and I didn't see any others in this area. I clarified some comments so it should be more clearly correct. BUG=1279570 Review URL: http://codereview.chromium.org/4250 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2549 0039d316-1c4b-4281-b951-d872f2087c98
* Delete the provisional load commit notification since it duplicates the nav ↵brettw@google.com2008-09-171-15/+2
| | | | | | | | | | | entry committed notification. I had to add some more stuff to the nav entry committed structure which now looks suspiciously like the provisional load details structure. I'll see how I can improve this in a future pass. I used the new NotificationRegistrar to automatically unregister for notifications in the SSL manager, which reduces some code. Review URL: http://codereview.chromium.org/3095 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2313 0039d316-1c4b-4281-b951-d872f2087c98
* Wires up session restore so that it correctly deals with thesky@google.com2008-09-171-12/+16
| | | | | | | | | | | | navigation controller removing entries from the front of its list. BUG=1324021 TEST=covered by unit tests, but make sure you don't see problems with session restore. Review URL: http://codereview.chromium.org/2906 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2310 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the rest of the alternate nav url fetcher from the navigation controller.brettw@google.com2008-09-161-22/+0
| | | | | | | | | | | | This changes the memory model around a bit, and it's not the most clear thing ever, not that it was before. The alternate URL fetcher is now responsible for deleting itself in most cases. BUG=2370 (Assertion when using the alternate URL tracker twice in a row) BUG=1324500 (Move the AlternateNavURLFetcher logic out of NavigationController) Review URL: http://codereview.chromium.org/2905 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2279 0039d316-1c4b-4281-b951-d872f2087c98
* Remove an explicit call from the NavigationController to the alternate URLbrettw@google.com2008-09-161-9/+0
| | | | | | | | | | | fetcher since there is already a notification that does this. I created a class that will automatically unregister for notifications when it goes out of scope and used it here. I think it will be useful for most consumers of notifications. Review URL: http://codereview.chromium.org/2895 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2276 0039d316-1c4b-4281-b951-d872f2087c98
* Remove registration step between NavigationController > Profile.tim@chromium.org2008-09-161-4/+0
| | | | | | | | | No code path requires NavigationControllers to register themselves with a profile. We won't need this moving forward, either. Review URL: http://codereview.chromium.org/2869 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2254 0039d316-1c4b-4281-b951-d872f2087c98
* This is almost a complete rewrite of DidNavigate and the associated ↵brettw@google.com2008-09-141-171/+439
| | | | | | | | | | NavigationController logic. The approach is that the NavigationController should be responsible for the logic and memory management of navigation. Previously, half the logic and memory management lived in WebContents which made it very hard to figure out what was going on. I split out the various navigation types into separate functions, which then copy and update any existing NavigationEntry as necessary. Previously, WebContents would make a new one which would be manually populated with random fields (I think some were forgotten, too), and then the NavigationController may or may not commit it. Review URL: http://codereview.chromium.org/479 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2201 0039d316-1c4b-4281-b951-d872f2087c98
* Fix SSL state in the URL bar being incorrect. Going to an EV site like ↵brettw@google.com2008-09-071-1/+7
| | | | | | | | | | | | | https://www.verisign.com/ would not should the EV name in the URL bar unless you did something like switch tabs away and back because in my cleanup I removed the notification that this was depending on. This patch adds a new NOTIFY_SSL_STATE_CHANGED notification which is broadcast by the various SSL components when they update the flags. The browser now listens for this notification and will update the URL bar. BUG=1359547 TEST=see repro steps in bug Review URL: http://codereview.chromium.org/436 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1831 0039d316-1c4b-4281-b951-d872f2087c98
* Clean up brettw's checkin of r1032.wtc@google.com2008-09-041-7/+0
| | | | | | | | | | | Fix a DCHECK on ssl().content_status() in web_contents.cc. Remove the unused ResetInternal method of NavigationController. R=brettw Review URL: http://codereview.chromium.org/221 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1720 0039d316-1c4b-4281-b951-d872f2087c98
* Make a step on refactoring navigation. The eventual plan is to have the ↵brettw@google.com2008-08-281-7/+16
| | | | | | | | | | | | | NavigationController create and commit the new NavigationEntries (currently WebContents does a bunch of the details of this which is hard to understand and not easily testable). This tries to consolidate the logic that I want to move to the NavigationController without actually moving it there yet. I removed all of the "PreCommit" functions in WebContents, since when the NavigationController does all of the committing, there won't be a phase where the NavigationEntry exists but isn't committed. Most of the logic could be moved to the PostCommit functions without any problem, which is an indication that the current design was busted anyway. I had to precompute some data and pass it to the *PostCommit function to work around some of the components that required old data. I had to change InfoBars around since it relied on having both the committed and uncommitted entries, but I think the new design is much better anyway. BUG=1343593,1343146 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1506 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes regression where we were no longer deleting TabContents whensky@google.com2008-08-281-11/+17
| | | | | | | | | | navigating to a new TabContents. BUG=1349274 TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1487 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup navigation_entry.h. I made the accessors consistent and in Google ↵brettw@google.com2008-08-271-46/+45
| | | | | | style, and organized and commented all the entries. Hopefully it will be much easier to find things and deal with this class. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1449 0039d316-1c4b-4281-b951-d872f2087c98
* Add some new tests for NavigationController for navigations that come in ↵brettw@google.com2008-08-251-0/+1
| | | | | | when various navigations are pending. This doesn't actually change any behavior. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1314 0039d316-1c4b-4281-b951-d872f2087c98
* Use a more compact license header in source files.license.bot2008-08-241-28/+4
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1287 0039d316-1c4b-4281-b951-d872f2087c98
* Fix leak on shutdown in the navigation controller. The pending entry was notbrettw@google.com2008-08-211-0/+2
| | | | | | getting deleted. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1173 0039d316-1c4b-4281-b951-d872f2087c98
* Kill NavigationControllerBase. I merged the two into NavigationController.brettw@google.com2008-08-211-20/+362
| | | | | | | | | This fixes a leak of NavigationEntry's by using the spiffy linked ptr. I had to add a const to linked_ptr for the comparisons to work. BUG=1319484 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1137 0039d316-1c4b-4281-b951-d872f2087c98
* Cleans up notifications for the NavigationController. There were severalbrettw@google.com2008-08-191-28/+5
| | | | | | | | | | | | notifications before and some of them were very unclear and misused (STATE_CHANGED). This one, and PRUNED were called unnecessarily in some cases as well. I replaced STATE_CHANGED and INDEX_CHANGED with ENTRY_COMMITTED which is more clear and covers (I think!) all the cases that the callers care about. I added a simple notification testing helper class, and used in the navigation controller unit tests to make sure we get the proper notifications. I had to change NotificationSource/Details to have a = and copy constructor so I can track them easily in my helper. I don't see why this would be bad. BUG=1325636,1321376,1325779 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1039 0039d316-1c4b-4281-b951-d872f2087c98
* Factor the SSL state out of the main NavigationEntry into a helper class. Thisbrettw@google.com2008-08-191-3/+3
| | | | | | | | | | | makes it easier to find stuff and also copy ssl state (just assign). I made one "real" change in web_contents where I copy the entire SSL state now to the new entry rather than just a few fields like the old one. I couldn't figure out why this was necessary: running it shows that this leaves the other two fields in the uninitialized state which seems wrong. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1032 0039d316-1c4b-4281-b951-d872f2087c98
* git-svn-id: svn://svn.chromium.org/chrome/trunk/src@963 ↵brettw@google.com2008-08-151-5/+28
| | | | 0039d316-1c4b-4281-b951-d872f2087c98
* Cleans up notifications for the NavigationController. There were severalbrettw@google.com2008-08-151-28/+5
| | | | | | | | | | | | | | | | | | | | | | | | notifications before and some of them were very unclear and misused (STATE_CHANGED). This one, and PRUNED were called unnecessarily in some cases as well. I replaced STATE_CHANGED and INDEX_CHANGED with ENTRY_COMMITTED which is more clear and covers (I think!) all the cases that the callers care about. I added a simple notification testing helper class, and used in the navigation controller unit tests to make sure we get the proper notifications. I had to change NotificationSource/Details to have a = and copy constructor so I can track them easily in my helper. I don't see why this would be bad. As part of this, I got very frustrated recompiling the world whenever navigation_types.h changed. So I removed this dependency from the notification service which everybody includes. Most of the changed files are adding notification_types.h in the .cc file where it's needed. BUG=1325636,1321376,1325779 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@956 0039d316-1c4b-4281-b951-d872f2087c98
* Fixes two bugs in NavigationController:sky@google.com2008-08-141-5/+3
| | | | | | | | | | | | | | | . TabContentsWasDestroyed wasn't removing from the collector map, resulting. . The collector map wasn't cleared in Destroy when it should have been. This was the cause of random ui failures. BUG=1324555 TEST=none git-svn-id: svn://svn.chromium.org/chrome/trunk/src@870 0039d316-1c4b-4281-b951-d872f2087c98
* First, this removes the dependency of NavigationController on thebrettw@google.com2008-08-131-60/+32
| | | | | | | | | | | | | | | | | | | | | | SessionService. There were already some notifications that could be used to tell what's going on, and I filled out the rest. I moved some notifications from various places to the NavigationController. In ssl_blocking_page, I removed a notification because it also calls DidNavigateToEntry which does the notification (we got duplicate calls before). In browser.cc I removed the tab parented notification since this is already called by NavigationController::SetWindowID. I removed some obsolete notifications and associated structures, especially in history (like HOST_DELETED that was never issued). I renamed the window_map_ in the MetricsService becuase it was actually a map of controllers and Windows. This also reorders the navigation_types header file to try to bring some order to it. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@807 0039d316-1c4b-4281-b951-d872f2087c98
* Ensures that we clean up TabContents with other types after a navigation ↵creis@google.com2008-08-041-26/+29
| | | | | | | | | | | commits, even if their NavigationEntries aren't adjacent to the current entry. Also makes NavigationController::Destroy compatible with NavigationControllerTest, which adds more tab types than TAB_CONTENTS_NUM_TYPES. Also re-enables the SwitchTypes tests and adds another to prevent regression of this bug. BUG=1296773 TEST=NavigationControllerTest.SwitchTypesCleanup git-svn-id: svn://svn.chromium.org/chrome/trunk/src@332 0039d316-1c4b-4281-b951-d872f2087c98
* Add chrome to the repository.initial.commit2008-07-261-0/+712
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15 0039d316-1c4b-4281-b951-d872f2087c98