generate test_shell.pak and hook up loading net resources from

test_shell.pak.  Move the net resource loading into the platform
specific files (still a stub on osx).

Review URL: http://codereview.chromium.org/18186


git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8321 0039d316-1c4b-4281-b951-d872f2087c98
Esse commit está contido em:
tc@google.com
2009-01-20 21:22:37 +00:00
commit f95664891b
8 arquivos alterados com 70 adições e 19 exclusões
+2
Ver Arquivo
@@ -39,6 +39,8 @@ class DataPack {
// Number of resources in the data.
size_t resource_count_;
DISALLOW_COPY_AND_ASSIGN(DataPack);
};
} // namespace base
+3 -3
Ver Arquivo
@@ -807,15 +807,15 @@ std::string CanonicalizeHost(const std::wstring& host, bool* is_ip_address) {
}
std::string GetDirectoryListingHeader(const std::string& title) {
#if defined(OS_WIN)
#if defined(OS_WIN) || defined(OS_LINUX)
static const StringPiece header(NetModule::GetResource(IDR_DIR_HEADER_HTML));
if (header.empty()) {
NOTREACHED() << "expected resource not found";
}
std::string result(header.data(), header.size());
#elif defined(OS_POSIX)
#elif defined(OS_MACOSX)
// TODO(estade): Temporary hack. Remove these platform #ifdefs when we
// have implemented resources for non-Windows platforms.
// have implemented resources for OSX.
LOG(INFO) << "FIXME: hacked resource loading";
FilePath path;
PathService::Get(base::DIR_EXE, &path);
+16
Ver Arquivo
@@ -194,6 +194,22 @@ env.Alias('webkit', i)
if env.Bit('windows'):
env.Depends(test_shell, '$V8_DIR/vc80.pdb')
if env.Bit('linux'):
# Build the linux resource file.
env.Append(BUILDERS = { 'Repack' : Builder(
action = 'python $CHROME_SRC_DIR/tools/data_pack/repack.py $TARGET $SOURCES',
)})
test_shell_data = env.Repack(
'$TARGET_ROOT/test_shell.pak',
['$TARGET_ROOT/grit_derived_sources/net_resources.pak',
'$TARGET_ROOT/grit_derived_sources/webkit_resources.pak',
]
)
env.Depends(test_shell, test_shell_data)
i = env.Install('$DESTINATION_ROOT', test_shell_data)
env.Alias('webkit', i)
test_files = [
'image_decoder_unittest.cc',
'keyboard_unittest.cc',
+4
Ver Arquivo
@@ -48,6 +48,7 @@
typedef std::list<gfx::NativeWindow> WindowList;
struct WebPreferences;
class StringPiece;
class TestNavigationEntry;
class TestNavigationController;
@@ -252,6 +253,9 @@ public:
// Show the "attach to me" dialog, for debugging test shell startup.
static void ShowStartupDebuggingDialog();
// This is called indirectly by the network layer to access resources.
static StringPiece NetResourceProvider(int key);
protected:
bool Initialize(const std::wstring& startingURL);
void SizeToSVG();
+20
Ver Arquivo
@@ -11,10 +11,12 @@
#include <signal.h>
#include <unistd.h>
#include "base/data_pack.h"
#include "base/file_path.h"
#include "base/file_util.h"
#include "base/message_loop.h"
#include "base/path_service.h"
#include "base/string_piece.h"
#include "base/string_util.h"
#include "net/base/mime_util.h"
#include "net/base/net_util.h"
@@ -616,6 +618,24 @@ void TestShell::ShowStartupDebuggingDialog() {
gtk_widget_destroy(dialog);
}
// static
StringPiece TestShell::NetResourceProvider(int key) {
static scoped_ptr<base::DataPack> resource_data_pack;
if (!resource_data_pack.get()) {
resource_data_pack.reset(new base::DataPack);
FilePath data_path;
PathService::Get(base::DIR_EXE, &data_path);
data_path = data_path.Append("test_shell.pak");
bool success = resource_data_pack->Load(data_path);
CHECK(success) << "failed to load test_shell.pak";
}
StringPiece res;
resource_data_pack->Get(key, &res);
return res;
}
//-----------------------------------------------------------------------------
namespace webkit_glue {
+8
Ver Arquivo
@@ -15,11 +15,13 @@
#include "base/file_util.h"
#include "base/gfx/size.h"
#include "base/icu_util.h"
#include "base/logging.h"
#include "base/mac_util.h"
#include "base/memory_debug.h"
#include "base/message_loop.h"
#include "base/path_service.h"
#include "base/stats_table.h"
#include "base/string_piece.h"
#include "base/string_util.h"
#include "net/base/mime_util.h"
#include "skia/ext/bitmap_platform_device.h"
@@ -859,6 +861,12 @@ void TestShell::ShowStartupDebuggingDialog() {
// TODO(port): Show a modal dialog here with an attach to me message.
}
StringPiece TestShell::NetResourceProvider(int key) {
// TODO(port): Return the requested resource.
NOTIMPLEMENTED();
return StringPiece();
}
//-----------------------------------------------------------------------------
namespace webkit_glue {
+2 -16
Ver Arquivo
@@ -32,7 +32,6 @@
#include "base/process_util.h"
#include "base/rand_util.h"
#include "base/stats_table.h"
#include "base/string_piece.h"
#include "base/string_util.h"
#include "base/sys_info.h"
#include "base/trace_event.h"
@@ -60,19 +59,6 @@ static int kStatsFileThreads = 20;
static int kStatsFileCounters = 200;
#if defined(OS_WIN)
StringPiece GetRawDataResource(HMODULE module, int resource_id) {
void* data_ptr;
size_t data_size;
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
&data_size) ?
StringPiece(static_cast<char*>(data_ptr), data_size) : StringPiece();
}
// This is called indirectly by the network layer to access resources.
StringPiece NetResourceProvider(int key) {
return GetRawDataResource(::GetModuleHandle(NULL), key);
}
// This test approximates whether you have the Windows XP theme selected by
// inspecting a couple of metrics. It does not catch all cases, but it does
// pick up on classic vs xp, and normal vs large fonts. Something it misses
@@ -224,10 +210,10 @@ int main(int argc, char* argv[]) {
// Load ICU data tables
icu_util::Initialize();
#if defined(OS_WIN)
// Config the network module so it has access to a limited set of resources.
net::NetModule::SetResourceProvider(NetResourceProvider);
net::NetModule::SetResourceProvider(TestShell::NetResourceProvider);
#if defined(OS_WIN)
INITCOMMONCONTROLSEX InitCtrlEx;
InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
+15
Ver Arquivo
@@ -17,6 +17,7 @@
#include "base/path_service.h"
#include "base/resource_util.h"
#include "base/stack_container.h"
#include "base/string_piece.h"
#include "base/string_util.h"
#include "base/trace_event.h"
#include "base/win_util.h"
@@ -111,6 +112,14 @@ bool MinidumpCallback(const wchar_t *dumpPath,
return false;
}
StringPiece GetRawDataResource(HMODULE module, int resource_id) {
void* data_ptr;
size_t data_size;
return base::GetDataResourceFromModule(module, resource_id, &data_ptr,
&data_size) ?
StringPiece(static_cast<char*>(data_ptr), data_size) : StringPiece();
}
} // namespace
// Initialize static member variable
@@ -690,6 +699,12 @@ void TestShell::ShowStartupDebuggingDialog() {
MessageBox(NULL, L"attach to me?", L"test_shell", MB_OK);
}
// static
StringPiece TestShell::NetResourceProvider(int key) {
return GetRawDataResource(::GetModuleHandle(NULL), key);
}
/////////////////////////////////////////////////////////////////////////////
// WebKit glue functions