summaryrefslogtreecommitdiffstats
path: root/content
Commit message (Collapse)AuthorAgeFilesLines
* [content shell] remove spurious printf formatjochen@chromium.org2012-10-111-2/+2
| | | | | | | | | BUG=111316 TEST=pixel tests that pass actually pass Review URL: https://codereview.chromium.org/11085091 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161416 0039d316-1c4b-4281-b951-d872f2087c98
* Implicit coversion operators from integer geometry types to floating point.danakj@chromium.org2012-10-111-2/+1
| | | | | | | | | | | | | | | | | | | This change allows you to call a function that expects a floating point object with an integer object and have things just work. The addition operator for Points is outside the Point classes so it can add/subtract integer and float points together implicitly. Tested to verify compilation with: ui_unittests:RectTest.ToRectF ui_unittests:SizeTest.ToSizeF ui_unittests:PointTest.ToPointF BUG=147395 R=sky@chromium.org Review URL: https://chromiumcodereview.appspot.com/11028127 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161415 0039d316-1c4b-4281-b951-d872f2087c98
* Browser Plugin: Implement CanGoBack/CanGoForwardfsamuel@chromium.org2012-10-1110-35/+164
| | | | | | | | | BUG=154831 Review URL: https://chromiumcodereview.appspot.com/11092023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161414 0039d316-1c4b-4281-b951-d872f2087c98
* Enable WebMediaPlayerMS only when ENABLE_WEBRTC is defined.wjia@chromium.org2012-10-111-0/+2
| | | | | | | | | Some platforms have gyp define enable_webrt=0. BUG=142988 Review URL: https://codereview.chromium.org/11066123 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161392 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup RenderViewImpl override methods from WebKitboliu@chromium.org2012-10-112-35/+10
| | | | | | | | | | | | createPluginReplacement and didCreateScriptContext is no longer in WebKit::WebFrameClient or called anywhere else. Removing them. numberOfWheelEventHandlersChanged and hasTouchEventHandlers are overriding methods from WebKit::WebViewClient. Moving them up. Review URL: https://chromiumcodereview.appspot.com/11094062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161384 0039d316-1c4b-4281-b951-d872f2087c98
* Upstream latest DownloadController changes for android.yfriedman@chromium.org2012-10-111-3/+4
| | | | | | Review URL: https://codereview.chromium.org/11103040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161378 0039d316-1c4b-4281-b951-d872f2087c98
* Upstream deviceScaleFactor initialization in render_view_implyusufo@chromium.org2012-10-111-0/+2
| | | | | | | | | | | | This change makes sure deviceScalefactor is initialized consistently with the deviceInfo value. BUG=136745 Review URL: https://chromiumcodereview.appspot.com/11087067 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161365 0039d316-1c4b-4281-b951-d872f2087c98
* Build browser_main_loop.cc on iOS.msarda@chromium.org2012-10-112-1/+8
| | | | | | | | | | Adds browser_main_loop.cc to the build on iOS and ifdefs out the parts that are not supported on iOS. Review URL: https://chromiumcodereview.appspot.com/11087007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161362 0039d316-1c4b-4281-b951-d872f2087c98
* Reland r161256: Fix the crash that was happening on the buildbot (but not ↵jam@chromium.org2012-10-118-14/+13
| | | | | | | | | | | trybots, for a strange reason) because ResourceBundle was initialized twice for tests that use the RenderViewTest harness. The one difference is to check if ResourceBundle is initialized before initializing it. This is needed because on content_browsertests it's not initialized while in browser_tests it is. We can't make the two browser test binaries behave the same because of differences in how chrome's browser_tests and unit_tests can share the same test suite while in content that's not possible. TBR=cpu Review URL: https://codereview.chromium.org/11091058 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161361 0039d316-1c4b-4281-b951-d872f2087c98
* This change is motivated by the need to implement the Android ↵benm@google.com2012-10-1116-7/+89
| | | | | | | | | | | | | | | | | | | | WebView.loadDataWithBaseURL API[1], which allows access to local file:// resources (depending on AwSettings.getAllowFileAccess) as long as the base URL provided is not "data:". When AwSettings.getAllowFileAccess returns false, data URIs loaded with a non-data base URL should be able to access file:///android_asset and file:///android_res/, but not the wider filesystem. We grant the WebView process access to file:// via ChildProcessSecurityPolicy (as WebView is single process we do this on process startup) and add a field to ViewMsg_NavigateParams that indicates if the URL being loaded should have access to local loads. This is bit is checked when the provisional load commits and if set, grants the SecurityOrigin access to local resources. The bit defaults to false and is only set in android_webview when AwContents loads a data URL with a non-data base URL, so there should be no behavior change outside of android_webview. Once the SecurityOrigin allows local loads, code already present in android_webview controls whether the URL should be able to load either only android_asset and android_res or any file:// URL (see https://codereview.chromium.org/11090003/). [1] http://developer.android.com/reference/android/webkit/WebView.html#loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) BUG=152223 Review URL: https://codereview.chromium.org/10990056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161355 0039d316-1c4b-4281-b951-d872f2087c98
* Show selection handles around selected text.husky@chromium.org2012-10-1110-21/+3164
| | | | | | | | | | | | | | | This patch upstreams code to display text selection handles in the Android content shell. While in selection mode, we also display an action bar with editing commands; I have stubbed this out because we don't yet have the necessary resources (added a TODO for that). BUG=138468 TEST=none Review URL: https://chromiumcodereview.appspot.com/11068010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161353 0039d316-1c4b-4281-b951-d872f2087c98
* [content shell] Add layout test specific font setup (for linux only right now)jochen@chromium.org2012-10-118-0/+211
| | | | | | | | | | BUG=111316 TEST=css1/basic/comments.html passes TBR=jam Review URL: https://codereview.chromium.org/11093068 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161351 0039d316-1c4b-4281-b951-d872f2087c98
* [content shell] remove dead code (disabling ssl certificate checks for ↵jochen@chromium.org2012-10-111-2/+0
| | | | | | | | | | | | | | layout tests) This is now configured in the ShellURLRequestContext BUG=111316 TEST=none Review URL: https://chromiumcodereview.appspot.com/11093069 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161337 0039d316-1c4b-4281-b951-d872f2087c98
* Ifdef out the parts of navigation_controller.h that are not supported on iOS.msarda@chromium.org2012-10-111-0/+4
| | | | | | Review URL: https://chromiumcodereview.appspot.com/11092005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161329 0039d316-1c4b-4281-b951-d872f2087c98
* BrowserTestBase::CreateTestServer should accept FilePathtoyoshim@chromium.org2012-10-113-4/+5
| | | | | | | | | | BUG=none TEST=browser_tests, content_browsertests Review URL: https://chromiumcodereview.appspot.com/11094040 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161318 0039d316-1c4b-4281-b951-d872f2087c98
* Converted GetOriginsForHostTask to use base::PostTaskAndReply(). Deleted ↵calvinlo@chromium.org2012-10-112-100/+25
| | | | | | | | | | | superclasses GetOriginsTaskBase, HelperTask. Also deleted QuotaTaskThread class as nothing references that anymore. BUG=139270 Review URL: https://chromiumcodereview.appspot.com/11091042 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161307 0039d316-1c4b-4281-b951-d872f2087c98
* Removing webkit diff with Android treedfalcantara@chromium.org2012-10-111-3/+3
| | | | | | | | | | | Removes some :: global namespace scoping and updates comments. BUG= Review URL: https://chromiumcodereview.appspot.com/11098054 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161276 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 161256 - Fix the crash that was happening on the buildbot (but not ↵jam@chromium.org2012-10-116-2/+14
| | | | | | | | | | | trybots, for a strange reason) because ResourceBundle was initialized twice for tests that use the RenderViewTest harness. Review URL: https://codereview.chromium.org/11090061 TBR=jam@chromium.org Review URL: https://codereview.chromium.org/11103025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161275 0039d316-1c4b-4281-b951-d872f2087c98
* [Android] Upstreaming CommandLine.java diffdfalcantara@chromium.org2012-10-111-8/+12
| | | | | | | | | | | | Changes were made to this file downstream to attempt to fix flakyness with tests using this class. BUG= Review URL: https://chromiumcodereview.appspot.com/11103016 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161267 0039d316-1c4b-4281-b951-d872f2087c98
* Fix print settings units conversion for PPB_Printing.raymes@chromium.org2012-10-111-2/+2
| | | | | | | | | | | | This fixes the conversion of print settings units ands adds some sanity checks to the ppapi printing test. BUG=none TBR=brettw Review URL: https://chromiumcodereview.appspot.com/11098034 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161266 0039d316-1c4b-4281-b951-d872f2087c98
* Fix the crash that was happening on the buildbot (but not trybots, for a ↵jam@chromium.org2012-10-116-14/+2
| | | | | | | | strange reason) because ResourceBundle was initialized twice for tests that use the RenderViewTest harness. Review URL: https://codereview.chromium.org/11090061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161256 0039d316-1c4b-4281-b951-d872f2087c98
* Revert: Flapper field trial to use workerpool for sync file operations.shess@chromium.org2012-10-113-69/+1
| | | | | | | | | | | | | | | Original: https://chromiumcodereview.appspot.com/11016016 The field trial indicated a 20% improvement using blocking workerpool. That seems worth merging to M-23. Revert the change so that a clean change can be landed and drover'ed over. BUG=153383 TBR=yzshen@chromium.org Review URL: https://codereview.chromium.org/11087068 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161253 0039d316-1c4b-4281-b951-d872f2087c98
* Rename output jar created by apks to have chromium_apk_ prefix.shashishekhar@chromium.org2012-10-111-5/+6
| | | | | | | | | | | | | Output jar created by apks, currently have chromium_ prefix, this prefix is also used by jar targets, to avoid name space collision change the prefix from chromium to chromium_apk. BUG= Review URL: https://chromiumcodereview.appspot.com/11094015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161238 0039d316-1c4b-4281-b951-d872f2087c98
* Remove unused stuff from ContentViewClientnileshagrawal@chromium.org2012-10-101-10/+1
| | | | | | | | | | Also removing a diff. BUG= Review URL: https://codereview.chromium.org/11028126 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161233 0039d316-1c4b-4281-b951-d872f2087c98
* Tentatively turn on WebMediaPlayerMS by default.wjia@chromium.org2012-10-106-11/+21
| | | | | | | | | | WebMediaPlayerMS can be disabled by using "--disable-web-media-player-ms" Create a static function in MediaStreamImpl for checking whether a URL is media stream. This can save some overhead in render_view_impl.cc. BUG=142988 Review URL: https://codereview.chromium.org/11066101 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161230 0039d316-1c4b-4281-b951-d872f2087c98
* Expose getDefaultUserAgent to javajoth@chromium.org2012-10-101-0/+8
| | | | | | | | | | | This is needed for webview BUG= Review URL: https://chromiumcodereview.appspot.com/11098036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161225 0039d316-1c4b-4281-b951-d872f2087c98
* Disable ResourceBundle change from 161202 while I figure out why it's ↵jam@chromium.org2012-10-102-2/+2
| | | | | | failing on buildbot but not trybot. TBR=cpu git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161222 0039d316-1c4b-4281-b951-d872f2087c98
* Only register the newer one of {bundled, component} Pepper Flash.bauerb@chromium.org2012-10-103-0/+9
| | | | | | | | | BUG=151716 Review URL: https://chromiumcodereview.appspot.com/11090018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161210 0039d316-1c4b-4281-b951-d872f2087c98
* Plumb through surface size for --enable-partial-swaps on OSXbacker@chromium.org2012-10-103-2/+4
| | | | | | | | | | BUG=none TEST=by hand with http://www.webkit.org/blog-files/3d-transforms/poster-circle.html and --enable-partial-swaps Review URL: https://chromiumcodereview.appspot.com/11099037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161209 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a test which uses the RenderViewTest harness running in unit_test ↵jam@chromium.org2012-10-106-18/+32
| | | | | | | | binaries. This gives an assert in WebKit in debug builds because WebKit is only supposed to be initialized once. The fix is to separate the test from the harness. Review URL: https://codereview.chromium.org/11066098 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161202 0039d316-1c4b-4281-b951-d872f2087c98
* Shift EnsureNoPendingDownloads() implementation into tests.rdsmith@chromium.org2012-10-103-20/+84
| | | | | | | | | R=benjhayden@chromium.org Review URL: https://chromiumcodereview.appspot.com/11050003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161184 0039d316-1c4b-4281-b951-d872f2087c98
* Introduce PlatformBitmap, which is a minimal helper class that wraps an SkBitmapreed@google.com2012-10-1027-48/+49
| | | | | | | | | | | | | | | | | and a PlatformSurface. This is used to replace the PlatformCanvas that was being passed to BackingStore to return pixels. The problem to solve is that PlatformCanvas is an extension of SkCanvas, and SkCanvas is losing the ability to have its backend specified after its constructor (for performance reasons). The BackingStore interface only needs to return a copy of its pixels, and offer a platform-specific way to draw into it (i.e. BitBlt). The PlatformSurface is sufficient for this, so the larger infrastructure of PlatformCanvas/PlatformDevice is not required. Review URL: https://codereview.chromium.org/11031055 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161163 0039d316-1c4b-4281-b951-d872f2087c98
* Browser Plugin: When Guest crashes Embedder crashes in content shellfsamuel@chromium.org2012-10-101-6/+13
| | | | | | | | | | | | | | | | | content_shell does not have the sad plugin asset. On crash, we attempt to paint the sad plugin asset without verifying whether or not it's available. In this patch we do that check. If it is not available we paint black instead. As a small added bonus, this patch introduces the small optimization of destroying the backing store when the guest crashes because we have no need of it. Subsequent navigations will request a new backing store anyway. BUG=155059 Review URL: https://chromiumcodereview.appspot.com/11085044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161162 0039d316-1c4b-4281-b951-d872f2087c98
* Blacklist video and flash acceleration on NVIDIA Linux drivers.ccameron@chromium.org2012-10-101-1/+20
| | | | | | | | | | | | | | | | | | | If you create a context when you are low memory, this context may get into a bad state where geomerty is corrupted and the screen takes seconds to paint. The context remains in this state until it is destroyed, even if more memory comes available. This disabled accelerated compositing to limit the exposure to this bug. I plan to integrate this into M23. We shouldn't re-enable accelerated compositing until we have a more robust workaround, or NVIDIA fixes the context creation bug. BUG=145600 Review URL: https://chromiumcodereview.appspot.com/11095006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161150 0039d316-1c4b-4281-b951-d872f2087c98
* [Android] Restore the previous behaviour of TouchCommon.leandrogracia@chromium.org2012-10-102-11/+14
| | | | | | | | | | The changes introduced in the behaviour and construction of TouchCommon by https://codereview.chromium.org/11085008/ have busted many of our downstream tests. Revert to the old behaviour for now. BUG=155083 Review URL: https://codereview.chromium.org/11090050 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161146 0039d316-1c4b-4281-b951-d872f2087c98
* <browser> Disable browser plugin in content_shell by default.lazyboy@chromium.org2012-10-106-1/+45
| | | | | | | | | | | | | | | | | | | This means I had to move the flag that forcefully enables browser plugin everywhere from chrome/ to content/. Reasoning for the change: Enabling browser plugin in regular pages (other than apps), breaks same origin policy: The embedder is allowed to inject javascript: URLs into the browser plugin, and it will soon be able to call executeScript. That means the embedder can do whatever it wants with the guest. The concern is also true for content_shell, since anyone who embeds Chrome is facing a similar risk if they don't disable the browser plugin. BUG=154360 TEST=Tested with content_shell, by default browser plugin doesn't load anymore. content_browsertests would also not run, made the change to enable them. Ran Tests: content_browsertests:BrowserPluginHostTest* content_browsertests:BrowserPluginTest* browser_tests:BrowserTag* Review URL: https://chromiumcodereview.appspot.com/11035070 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161142 0039d316-1c4b-4281-b951-d872f2087c98
* Add UMA counter for hung renderers on cross-site navigation.nasko@chromium.org2012-10-103-0/+53
| | | | | | | | | BUG=104346 Review URL: https://chromiumcodereview.appspot.com/10907182 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161141 0039d316-1c4b-4281-b951-d872f2087c98
* DevTools: [remote debugging] introduce json/new and json/close for creating ↵pfeldman@chromium.org2012-10-107-61/+171
| | | | | | | | and closing the tabs. Review URL: https://chromiumcodereview.appspot.com/11033046 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161126 0039d316-1c4b-4281-b951-d872f2087c98
* Browser Plugin: Fix Eventsfsamuel@chromium.org2012-10-101-78/+88
| | | | | | | | | | | | | | | | | | This is a set of short-term fixes for BrowserPlugin events to address abarth@'s concerns. 1. Use frame's v8 context instead of creating a new one. 2. Use v8::Local<v8::Object> type for local handle to event objects. 3. Copy listener event listener vector before executing listeners to avoid referencing member variables in case one of the listeners deallocates the BrowserPlugin. A longer term fix will involve exposing CustomEvent to the WebKit API and constructing WebCustomEvents in browser_plugin.cc. BUG=155044 TEST=BrowserPluginHostTest.*, BrowserPluginTest.* pass Review URL: https://chromiumcodereview.appspot.com/11086025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161123 0039d316-1c4b-4281-b951-d872f2087c98
* Implement AwContentsClient and remove dependency on chrome/boliu@chromium.org2012-10-101-4/+3
| | | | | | | | | | | | | We are not depending on much functionality from ContentClient yet, so most methods are either no-op, left unimplemented with a TODO, or copied straight from the ChromeContentsClient implementation. BUG= Review URL: https://chromiumcodereview.appspot.com/11017024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161120 0039d316-1c4b-4281-b951-d872f2087c98
* [Android] Upstream WebView.allow{Content|File}Access implementation.mnaganov@chromium.org2012-10-102-61/+0
| | | | | | | | | | R=benm@chromium.org,joth@chromium.org BUG=153516 Review URL: https://chromiumcodereview.appspot.com/11090003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161103 0039d316-1c4b-4281-b951-d872f2087c98
* Fix comments per Avi's request.joi@chromium.org2012-10-101-3/+3
| | | | | | | | | | TBR=avi@chromium.org BUG=none Review URL: https://chromiumcodereview.appspot.com/11087049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161102 0039d316-1c4b-4281-b951-d872f2087c98
* [Android] Upstream content detection and ChromeBrowserProvider tests.leandrogracia@chromium.org2012-10-1025-14/+1208
| | | | | | | | BUG=125390,138755 Review URL: https://codereview.chromium.org/11085008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161101 0039d316-1c4b-4281-b951-d872f2087c98
* Remove NOTIMPLEMENTED in shell_web_contents_view_delegate to avoid log spew.shouqun.liu@intel.com2012-10-101-6/+0
| | | | | | | | | | BUG=154251 TEST= Review URL: https://chromiumcodereview.appspot.com/11087003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161093 0039d316-1c4b-4281-b951-d872f2087c98
* Build browser_process_sub_thread.cc on iOS.msarda@chromium.org2012-10-102-0/+3
| | | | | | | | | | Adds browser_process_sub_thread.cc to the build on iOS and ifdefs out BrowserChildProcessHostImpl::TerminateAll() as Chrome on iOS is single-process. Review URL: https://chromiumcodereview.appspot.com/11066054 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161091 0039d316-1c4b-4281-b951-d872f2087c98
* Build content_main_runner.cc on iOS.msarda@chromium.org2012-10-102-8/+12
| | | | | | | | | This CL excludes the parts that are not supported on iOS like the creating a new process for content (Chrome on iOS runs in a single process). Review URL: https://chromiumcodereview.appspot.com/11089002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161088 0039d316-1c4b-4281-b951-d872f2087c98
* Converted GetAllOriginsTask to use base::PostTaskAndReplyWithResult()calvinlo@chromium.org2012-10-102-45/+27
| | | | | | | | | BUG=139270 Review URL: https://chromiumcodereview.appspot.com/11028088 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161086 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a race condition that SurfaceTextureBridge can get released before ↵qinmin@chromium.org2012-10-107-46/+55
| | | | | | | | | | | passing it to the mediaplayer Use a scoped_refptr to protect SurfaceTextureBridge from being released when DestroyStreamTextureChromium and SetVideoSurface() get called at the same time on GPU and UI thread. Review URL: https://chromiumcodereview.appspot.com/11092010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161041 0039d316-1c4b-4281-b951-d872f2087c98
* beginSmoothScroll should send wheel ticks at constant velocity.nduca@chromium.org2012-10-103-9/+72
| | | | | | | | | | | | | | | | There are two fixes here: 1. Compute the wheel tick amount based on time elapsed rather than our post message rate. 2. Try to trigger a new forward when needed on the inputAck, instead of using postTask. This helps when the main thread is busy doing swaps, which happens on OSX. BUG=149408 Review URL: https://chromiumcodereview.appspot.com/11013043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161038 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup GpuBlacklist.thestig@chromium.org2012-10-104-394/+317
| | | | | | Review URL: https://chromiumcodereview.appspot.com/11028041 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@161012 0039d316-1c4b-4281-b951-d872f2087c98