From baa0477998f7b294a14a2bff5c3d206ba837ef2e Mon Sep 17 00:00:00 2001 From: "edburns%acm.org" Date: Wed, 20 Oct 2004 02:50:44 +0000 Subject: [PATCH] This checkin adds request header sniffing. Not sure how useful this is, but I wanted it for completeness with respect to response header sniffing. M webclient/src_moz/EmbedProgress.cpp - visit request headers on startUrlLoad. M webclient/test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java M webclient/test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java - exercise new code. git-svn-id: svn://10.0.0.236/trunk@164074 18797224-902f-48f8-a5cc-f745e15eee43 --- .../java/webclient/src_moz/EmbedProgress.cpp | 8 ++++ .../webclient/DocumentLoadListenerTest.java | 37 ++++++++++++++++--- .../mozilla/webclient/test/TestBrowser.java | 12 ++++++ 3 files changed, 52 insertions(+), 5 deletions(-) diff --git a/mozilla/java/webclient/src_moz/EmbedProgress.cpp b/mozilla/java/webclient/src_moz/EmbedProgress.cpp index 16f99bfee63..6d0427c77ef 100644 --- a/mozilla/java/webclient/src_moz/EmbedProgress.cpp +++ b/mozilla/java/webclient/src_moz/EmbedProgress.cpp @@ -164,6 +164,14 @@ EmbedProgress::OnStateChange(nsIWebProgress *aWebProgress, if ((aStateFlags & STATE_START) && (aStateFlags & STATE_IS_REQUEST)) { PR_LOG(prLogModuleInfo, PR_LOG_DEBUG, ("EmbedProgress::OnStateChange: START_URL_LOAD\n")); + if (channel && mCapturePageInfo) { + HttpHeaderVisitorImpl *visitor = + new HttpHeaderVisitorImpl(env, + properties, (jobject) + &(mOwner->GetWrapperFactory()->shareContext)); + channel->VisitRequestHeaders(visitor); + delete visitor; + } util_SendEventToJava(nsnull, mEventRegistration, diff --git a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java index 734de313315..54c33eb93c3 100644 --- a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java +++ b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java @@ -1,5 +1,5 @@ /* - * $Id: DocumentLoadListenerTest.java,v 1.1 2004-09-09 20:17:17 edburns%acm.org Exp $ + * $Id: DocumentLoadListenerTest.java,v 1.2 2004-10-20 02:50:44 edburns%acm.org Exp $ */ /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- @@ -164,21 +164,48 @@ public class DocumentLoadListenerTest extends WebclientTestCase { eventRegistration.addDocumentLoadListener(listener = new PageInfoListener() { public void eventDispatched(WebclientEvent event) { + Map map = null; + Iterator iter = null; if (event instanceof DocumentLoadEvent) { switch ((int) event.getType()) { - case ((int) DocumentLoadEvent.END_URL_LOAD_EVENT_MASK): + case ((int) DocumentLoadEvent.START_URL_LOAD_EVENT_MASK): assertNotNull(event.getEventData()); assertTrue(event.getEventData() instanceof Map); - Map map = (Map) event.getEventData(); + map = (Map) event.getEventData(); assertEquals(url, map.get("URI")); assertNotNull(map.get("headers")); assertTrue(map.get("headers") instanceof Map); - Iterator iter = (map = (Map) map.get("headers")).keySet().iterator(); + iter = (map = (Map) map.get("headers")).keySet().iterator(); + boolean hadCorrectUserAgentHeader = false; + while (iter.hasNext()) { + String curName = iter.next().toString(); + if (curName.equals("Host")) { + if (-1 != map.get(curName).toString().indexOf("localhost")) { + hadCorrectUserAgentHeader = true; + } + } + System.out.println("\t" + curName + + ": " + + map.get(curName)); + } + assertTrue(hadCorrectUserAgentHeader); + break; + + case ((int) DocumentLoadEvent.END_URL_LOAD_EVENT_MASK): + assertNotNull(event.getEventData()); + assertTrue(event.getEventData() instanceof Map); + map = (Map) event.getEventData(); + assertEquals(url, map.get("URI")); + assertNotNull(map.get("headers")); + assertTrue(map.get("headers") instanceof Map); + iter = (map = (Map) map.get("headers")).keySet().iterator(); boolean hadCorrectServerHeader = false; while (iter.hasNext()) { String curName = iter.next().toString(); if (curName.equals("Server")) { - hadCorrectServerHeader = true; + if (-1 != map.get(curName).toString().indexOf("THTTPD")) { + hadCorrectServerHeader = true; + } } System.out.println("\t" + curName + ": " + diff --git a/mozilla/java/webclient/test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java b/mozilla/java/webclient/test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java index c080e7ddf14..d9ef124c62e 100644 --- a/mozilla/java/webclient/test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java +++ b/mozilla/java/webclient/test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java @@ -223,6 +223,18 @@ public class TestBrowser extends JPanel { Map map = (Map) event.getEventData(); if (event instanceof DocumentLoadEvent) { switch ((int) event.getType()) { + case ((int) DocumentLoadEvent.START_URL_LOAD_EVENT_MASK): + if (map.get("headers") instanceof Map) { + Iterator iter = (map = (Map) map.get("headers")).keySet().iterator(); + while (iter.hasNext()) { + String curName = iter.next().toString(); + System.out.println("\t" + curName + + ": " + + map.get(curName)); + } + } + + break; case ((int) DocumentLoadEvent.START_DOCUMENT_LOAD_EVENT_MASK): updateStatusInfo("Loading started."); break;