15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/view_cache_helper.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/pickle.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/net_errors.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/test_completion_callback.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/disk_cache/disk_cache.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/http/http_cache.h"
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "net/http/http_transaction_test_util.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/url_request/url_request_context.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestURLRequestContext : public URLRequestContext {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestURLRequestContext();
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual ~TestURLRequestContext() {
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    AssertNoURLRequests();
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Gets a pointer to the cache backend.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  disk_cache::Backend* GetBackend();
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HttpCache cache_;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestURLRequestContext::TestURLRequestContext()
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    : cache_(new MockNetworkLayer(), NULL,
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             HttpCache::DefaultBackend::InMemory(0)) {
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  set_http_transaction_factory(&cache_);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void WriteHeaders(disk_cache::Entry* entry, int flags,
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                  const std::string& data) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (data.empty())
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Pickle pickle;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pickle.WriteInt(flags | 1);  // Version 1.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pickle.WriteInt64(0);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pickle.WriteInt64(0);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pickle.WriteString(data);
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<WrappedIOBuffer> buf(new WrappedIOBuffer(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      reinterpret_cast<const char*>(pickle.data())));
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int len = static_cast<int>(pickle.size());
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::TestCompletionCallback cb;
57868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  int rv = entry->WriteData(0, 0, buf.get(), len, cb.callback(), true);
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(len, cb.GetResult(rv));
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void WriteData(disk_cache::Entry* entry, int index, const std::string& data) {
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (data.empty())
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int len = data.length();
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_refptr<IOBuffer> buf(new IOBuffer(len));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  memcpy(buf->data(), data.data(), data.length());
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::TestCompletionCallback cb;
70868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  int rv = entry->WriteData(index, 0, buf.get(), len, cb.callback(), true);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(len, cb.GetResult(rv));
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)void WriteToEntry(disk_cache::Backend* cache, const std::string& key,
753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                  const std::string& data0, const std::string& data1,
763551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                  const std::string& data2) {
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::TestCompletionCallback cb;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  disk_cache::Entry* entry;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv = cache->CreateEntry(key, &entry, cb.callback());
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rv = cb.GetResult(rv);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (rv != OK) {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rv = cache->OpenEntry(key, &entry, cb.callback());
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_EQ(OK, cb.GetResult(rv));
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteHeaders(entry, 0, data0);
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteData(entry, 1, data1);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteData(entry, 2, data2);
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->Close();
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FillCache(URLRequestContext* context) {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::TestCompletionCallback cb;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  disk_cache::Backend* cache;
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv =
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      context->http_transaction_factory()->GetCache()->GetBackend(
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          &cache, cb.callback());
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(OK, cb.GetResult(rv));
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string empty;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteToEntry(cache, "first", "some", empty, empty);
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteToEntry(cache, "second", "only hex_dumped", "same", "kind");
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteToEntry(cache, "third", empty, "another", "thing");
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace.
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ViewCacheHelper, EmptyCache) {
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestURLRequestContext context;
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewCacheHelper helper;
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestCompletionCallback cb;
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string prefix, data;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv = helper.GetContentsHTML(&context, prefix, &data, cb.callback());
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(OK, cb.GetResult(rv));
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(data.empty());
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ViewCacheHelper, ListContents) {
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestURLRequestContext context;
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewCacheHelper helper;
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FillCache(&context);
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string prefix, data;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestCompletionCallback cb;
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv = helper.GetContentsHTML(&context, prefix, &data, cb.callback());
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(OK, cb.GetResult(rv));
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, data.find("<html>"));
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("</html>"));
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("first"));
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("second"));
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("third"));
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("some"));
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("same"));
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("thing"));
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ViewCacheHelper, DumpEntry) {
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestURLRequestContext context;
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewCacheHelper helper;
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FillCache(&context);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string data;
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestCompletionCallback cb;
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv = helper.GetEntryInfoHTML("second", &context, &data, cb.callback());
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(OK, cb.GetResult(rv));
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, data.find("<html>"));
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("</html>"));
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("hex_dumped"));
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("same"));
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("kind"));
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("first"));
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("third"));
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("some"));
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(std::string::npos, data.find("another"));
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Makes sure the links are correct.
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ViewCacheHelper, Prefix) {
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestURLRequestContext context;
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewCacheHelper helper;
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FillCache(&context);
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key, data;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string prefix("prefix:");
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestCompletionCallback cb;
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv = helper.GetContentsHTML(&context, prefix, &data, cb.callback());
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(OK, cb.GetResult(rv));
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, data.find("<html>"));
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("</html>"));
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("<a href=\"prefix:first\">"));
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("<a href=\"prefix:second\">"));
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("<a href=\"prefix:third\">"));
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ViewCacheHelper, TruncatedFlag) {
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestURLRequestContext context;
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ViewCacheHelper helper;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  net::TestCompletionCallback cb;
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  disk_cache::Backend* cache;
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rv =
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      context.http_transaction_factory()->GetCache()->GetBackend(
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          &cache, cb.callback());
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(OK, cb.GetResult(rv));
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key("the key");
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  disk_cache::Entry* entry;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rv = cache->CreateEntry(key, &entry, cb.callback());
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(OK, cb.GetResult(rv));
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // RESPONSE_INFO_TRUNCATED defined on response_info.cc
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int flags = 1 << 12;
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WriteHeaders(entry, flags, "something");
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->Close();
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string data;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestCompletionCallback cb1;
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rv = helper.GetEntryInfoHTML(key, &context, &data, cb1.callback());
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(OK, cb1.GetResult(rv));
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(std::string::npos, data.find("RESPONSE_INFO_TRUNCATED"));
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
216